从Python调用Perl脚本

20 投票
5 回答
61480 浏览
提问于 2025-04-16 09:54

我有一个Perl脚本,想从一个Python脚本中调用它。我到处找过,但一直没有成功。基本上,我是想调用这个Perl脚本,并给它传递一个变量,但我不需要Perl脚本的输出,因为它是一个自包含的程序。

到目前为止,我想到的代码是:

var = "/some/file/path/"
pipe = subprocess.Popen(["./uireplace.pl", var], stdin=subprocess.PIPE)
pipe.stdin.write(var)
pipe.stdin.close()

我刚开始学习Python编程,所以我知道上面的代码肯定是胡说八道。任何帮助都会非常感激。

5 个回答

3

你可以试试 subprocess.call() 这个方法。它不会返回你执行的命令的输出,而是返回一个代码,用来表示执行是否成功。

var = "/some/file/path"
retcode = subprocess.call(["./uireplace.pl", var])
if retcode == 0:
    print("Passed!")
else:
    print("Failed!")

确保你的 Perl 脚本是可执行的。否则,你可以在命令中包含 Perl 解释器(类似这样):

subprocess.call(["/usr/bin/perl", "./uireplace.pl", var])
17

只需这样做:

var = "/some/file/path/"
pipe = subprocess.Popen(["perl", "uireplace.pl", var])
16

如果你只是想打开一个通道来运行perl解释器,那你已经在正确的方向上了。唯一我觉得你缺少的是,perl脚本本身并不是一个可执行的文件。所以你需要这样做:

var = "/some/file/path/"
pipe = subprocess.Popen(["perl", "./uireplace.pl", var], stdin=subprocess.PIPE)
pipe.stdin.write(var)
pipe.stdin.close()

撰写回答