shell “如何执行程序或调用系统命令?”的后续内容

cgfeq70w  于 2023-04-07  发布在  Shell
关注(0)|答案(2)|浏览(86)

我有一个与this one相关的问题。我想执行的命令是:

program test.in > test.out

其中program接受test.in作为输入并输出test.out

import subprocess

subprocess.Popen([program] + ['test.in > test.out'])

但我得到了错误

Cannot open file 'test.in > test.out' for reading.

我也试过

subprocess.Popen([program] + 'test.in > test.out'.split())

然而这导致错误

Cannot open file `>` for reading.

如何在不使用shell=True的情况下修改我的脚本,这会造成安全威胁?谢谢。

3npbholx

3npbholx1#

你可以这样做,而不改变命令:

import subprocess

cmd = "program test.in > test.out"
proc = subprocess.Popen(cmd, shell=True)
xu3bshqb

xu3bshqb2#

如果程序接受它们作为参数,那么你应该像这样遵循Popen的正常语法:

subprocess.Popen(['program', 'test.in', '>', 'test.out'])

你为什么不遵守这个语法?

相关问题