我正在尝试通过 Python 的子进程运行命令,但它无法正常运行。如果我在 shell 中输入:
pack < packfile.dat
pack
我的软件在哪里,packfile
是输入文件,那么软件运行良好。
如果我在 python 中尝试这个:
import subprocess as sp
import shlex
cmd = 'pack < packfile.dat'.split()
p = sp.Popen(cmd)
软件抱怨:
Pack must be run with: pack < inputfile.inp
Reading input file... (Control-C aborts)
它挂在那里。
最后一部分是特定于我的软件的,但事实是运行相同命令的两种方法会产生不同的结果,而事实并非如此。
谁能告诉我我做错了什么?
实际上,我打算最终这样做:
p = sp.Popen(cmd,stdout=sp.PIPE,stderr=sp.PIPE)
stdout, stderr = p.communicate()
由于我对此有点陌生,如果这不是最佳实践,请告诉我。
提前致谢。