首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试从python调用perl脚本,导致了奇怪的行为

尝试从python调用perl脚本,导致了奇怪的行为
EN

Stack Overflow用户
提问于 2011-06-23 14:00:50
回答 2查看 458关注 0票数 0

我尝试使用下面的代码行从我的python程序中调用perl脚本:

代码语言:javascript
复制
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脚本被执行,但给出一个神秘的错误:

代码语言:javascript
复制
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。

有人能帮上忙吗?

EN

回答 2

Stack Overflow用户

发布于 2011-06-27 13:59:36

在Perl中,有一条很好的规则:如果可能,使用popensystem的列表形式。Python似乎也有这些功能。我想知道如果你尝试一下会发生什么:

代码语言:javascript
复制
helper = "/path/to/compute_lexrank.pl"
helper_input = "/path/to/11sent"
subprocess.call([helper, helper_input])
票数 0
EN

Stack Overflow用户

发布于 2011-10-21 23:22:38

您可能需要将工作目录传递给subprocess.call

代码语言:javascript
复制
subprocess.call(r'/path/to/compute_lexrank.pl /path/to/11sent',shell=True,cwd="/path/to")

如果cwd不为None,则在执行之前,子目录的当前目录将更改为cwd。请注意,在搜索可执行文件时不会考虑此目录,因此不能指定程序相对于cwd.

的路径

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6449924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档