代码:
import subprocess
process = subprocess.Popen('echo 5')
错误:
Traceback (most recent call last):
File "test.py", line 3, in <module>
process = subprocess.Popen('echo 5')
File "/usr/lib64/python2.6/subprocess.py", line 642, in __init__
errread, errwrite)
File "/usr/lib64/python2.6/subprocess.py", line 1238, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
有人可以告知上述代码有什么问题吗?
答案 0 :(得分:5)
重写代码如下
import subprocess
process = subprocess.Popen(['echo', '5'])
命令应该是一个列表
答案 1 :(得分:1)
您必须将可执行文件和参数指定为列表:
var centerBtnFrame = centerBtn.frame
centerBtnFrame.origin.y = view.height - tabBar.height //This is the same logic as you've used for fixing x value of centerBtnFrame.
centerBtnFrame.origin.x = view.bounds.width/2 - centerBtnFrame.size.width/2
centerBtn.frame = centerBtnFrame
或作为字符串并设置subprocess.Popen(['echo', '5'])
:
shell=True
推荐第一个,因为它可以为您处理所需的转义。第二个简单地将字符串传递给外壳。根据{{3}}:
所有调用均需要args ,该参数应为字符串或程序参数序列。通常最好提供一个参数序列,因为它允许模块处理任何必需的参数转义和引用(例如,在文件名中允许空格)。如果传递单个字符串,则 shell 必须为True(请参见下文),否则字符串必须简单地命名要执行的程序而无需指定任何参数。