2

我正在尝试从 Python 运行 Perl 脚本。我知道如果在终端中运行 Perl 脚本,并且我希望将 Perl 脚本的输出写入我需要> results.txtperl myCode.pl. 这在终端中运行良好,但是当我尝试在 Python 中执行此操作时它不起作用。

这是代码:

import shlex
import subprocess

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

尽管> results.txt它不输出到该文件,但它确实输出到命令行。

4

1 回答 1

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这是更可靠的解决方案。

于 2015-03-25T19:18:35.130 回答