运行 来自 Python 的 Perl 代码(输出到文件)
Run Perl code (with output to file) from Python
我正在尝试 运行 来自 Python 的 Perl 脚本。我知道如果 运行 终端中的 Perl 脚本并且我希望将 Perl 脚本的输出写入一个文件,我需要在 perl myCode.pl
之后添加 > results.txt
。这在终端中工作正常,但是当我尝试在 Python 中执行此操作时,它不起作用。
此代码:
import shlex
import subprocess
args_str = "perl myCode.pl > results.txt"
args = shlex.split(args_str)
subprocess.call(args)
尽管 > results.txt
它不会输出到该文件,但会输出到命令行。
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
。最后一个通过让 call
自己进行重定向来直接执行 perl
。这是更可靠的解决方案。
我正在尝试 运行 来自 Python 的 Perl 脚本。我知道如果 运行 终端中的 Perl 脚本并且我希望将 Perl 脚本的输出写入一个文件,我需要在 perl myCode.pl
之后添加 > results.txt
。这在终端中工作正常,但是当我尝试在 Python 中执行此操作时,它不起作用。
此代码:
import shlex
import subprocess
args_str = "perl myCode.pl > results.txt"
args = shlex.split(args_str)
subprocess.call(args)
尽管 > results.txt
它不会输出到该文件,但会输出到命令行。
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
。最后一个通过让 call
自己进行重定向来直接执行 perl
。这是更可靠的解决方案。