[英]error in subprocess.Popen vs os.system
我正在尝试使用subprocess.Popen而不是os.system,但是遇到了问题。 这似乎很简单,以至于我可能缺少明显的东西。 我正在尝试调用和运行以前在Octave中编程的脚本(Octave代码可以正常工作,并且我不想花时间在NumPy中重新编写此脚本,等等)。 我也不想将Octave永久安装在此特定计算机上。
这段代码可以完美地工作:
os.system('sudo apt-get install octave')
os.system('octave Documents/small_eig.m')
os.system('sudo apt-get remove octave')
此代码,但是:
subprocess.Popen('sudo apt-get install octave')
subprocess.Popen('octave Documents/small_eig.m')
subprocess.Popen('sudo apt-get remove octave')
生成以下消息:
Traceback (most recent call last):
File "Documents/ben.py", line 11, in <module>
subprocess.Popen('sudo apt-get install octave')
File "/usr/lib/python2.7/subprocess.py", line 709, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1326, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
有什么想法吗?
谢谢,
您需要以“ shell模式”运行命令。 为此,请在调用Popen
时传递shell=True
。 尝试:
subprocess.Popen('sudo apt-get install octave', shell=True)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.