【发布时间】:2017-03-23 01:47:21
【问题描述】:
尝试运行以下命令:
command = "for i in `/bin/generateItems` ; do ; echo $i ; /bin/somecommand $i; done"
p = subprocess(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = p.communicate()
我收到以下错误: 没有这样的文件或目录
但是,当我在删除分号后运行完全相同的代码时,它可以工作:
command = "for i in `/bin/generateItems` ; do ; echo $i ; /bin/somecommand $i; done"
p = subprocess(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = p.communicate()
有人可以解释为什么会这样吗?我可以做些什么来让命令在 do 之后使用分号?
【问题讨论】:
-
这与 Python 无关。如果你直接在 shell 中运行命令,你会得到同样的错误,不是吗?这是一个 shell 语法错误。
-
您可以尝试在命令周围使用方括号 ["for i in
/bin/generateItems; do ; echo $i ; /bin/somecommand $i; done"] -
你为什么需要那个分号?
-
这两个代码块之间应该有区别吗?您在哪里删除了分号?
-
我得到一个不同的错误,顺便说一句:bash: syntax error near unexpected token `;`
标签: python python-2.7 subprocess