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

jks*_*snw 2 python subprocess shlex

我正在尝试从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)
Run Code Online (Sandbox Code Playgroud)

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

ike*_*ami 8

subprocess.call("perl myCode.pl >results.txt", shell=True)
Run Code Online (Sandbox Code Playgroud)

要么

subprocess.call(["sh", "-c", "perl myCode.pl >results.txt"])
Run Code Online (Sandbox Code Playgroud)

要么

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

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