我尝试使用下面的代码行从我的python程序中调用perl脚本:
subprocess.call(r'/path/to/compute_lexrank.pl /path/to/11sent',shell=True)当我从shell运行相同的perl脚本(只需输入/path/to/compute_lexrank.pl /path/to/11sent)时,它可以正常工作,但当我从python程序运行它时,perl脚本被执行,但给出一个神秘的错误:
Math::MatrixReal::new(): number of rows must be integer > 0 at /Users/filippo/Downloads/clairlib-core-1.08/lib//Clair/Network.pm line 1628现在,因为我还没有自己编写perl脚本,所以我不知道如何修复这个问题,但是为什么当我从shell或subprocess.call运行时,相同的脚本会有不同的行为呢?
我使用的是MacOsX、Python2.6(但我也尝试过2.5,同样的东西)和Perl5.10。
有人能帮上忙吗?
发布于 2011-06-27 13:59:36
在Perl中,有一条很好的规则:如果可能,使用popen和system的列表形式。Python似乎也有这些功能。我想知道如果你尝试一下会发生什么:
helper = "/path/to/compute_lexrank.pl"
helper_input = "/path/to/11sent"
subprocess.call([helper, helper_input])发布于 2011-10-21 23:22:38
您可能需要将工作目录传递给subprocess.call
subprocess.call(r'/path/to/compute_lexrank.pl /path/to/11sent',shell=True,cwd="/path/to")如果cwd不为None,则在执行之前,子目录的当前目录将更改为cwd。请注意,在搜索可执行文件时不会考虑此目录,因此不能指定程序相对于cwd.
的路径
https://stackoverflow.com/questions/6449924
复制相似问题