jks*_*snw 2 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)
Run Code Online (Sandbox Code Playgroud)
尽管> results.txt它没有输出到该文件但它确实输出到命令行.
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自己进行重定向直接执行.这是更可靠的解决方案.
| 归档时间: |
|
| 查看次数: |
5003 次 |
| 最近记录: |