繁体   English   中英

subprocess.Popen与os.system中的错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM