在python中运行perl脚本并将输出存储在文件中

时间:2016-06-06 16:02:32

标签: python

我试图运行

script.pl < input > output

在python中。我试过这个:

subprocess.check_call(["script.pl","<","input",">","output"])

我猜这不是正确的方法。 任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:3)

您想执行shell命令

script.pl < input > output             # 0 args, redirects stdin and stdout

但您正在执行shell命令

script.pl "<" input ">" output         # 4 args, and no redirections

如果要运行shell命令,则需要运行shell。

subprocess.check_call(["/bin/sh", "-c", "script.pl < input > output"])
  -or-
subprocess.check_call("script.pl < input > output", shell=True)

如果你完全避免运行shell,那将是最好的。

in_fh  = open('input', 'r')
out_fh = open('output', 'w')
subprocess.check_call("script.pl", stdin=in_fh, stdout=out_fh)

答案 1 :(得分:0)

保持简单,

import os
os.system("script.pl < input > output")