从Python运行Perl代码(带有输出到文件)

时间:2015-03-25 19:05:49

标签: python subprocess shlex

我正在尝试从Python运行Perl脚本。我知道如果在终端中运行Perl脚本并且我希望将Perl脚本的输出写成文件,我需要在> results.txt之后添加perl myCode.pl。这在终端中运行良好,但是当我尝试在Python中执行此操作时,它无效。

这段代码:

import shlex
import subprocess

args_str = "perl myCode.pl > results.txt"
args = shlex.split(args_str)
subprocess.call(args)

尽管> results.txt它没有输出到该文件但它输出到命令行。

1 个答案:

答案 0 :(得分:8)

subprocess.call("perl myCode.pl >results.txt", shell=True)

subprocess.call(["sh", "-c", "perl myCode.pl >results.txt"])

with open('results.txt', 'wb', 0) as file:
    subprocess.call(["perl", "myCode.pl"], stdout=file)

前两个调用shell来执行shell命令perl myCode.pl > results.txt。最后一个通过perl自己进行重定向直接执行call。这是更可靠的解决方案。