subprocess.Popen - 没有这样的文件或目录

时间:2016-11-16 06:59:31

标签: python subprocess

代码:

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

有人可以告知上述代码有什么问题吗?

2 个答案:

答案 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(请参见下文),否则字符串必须简单地命名要执行的程序而无需指定任何参数。