2015-03-13 53 views
1

我使用subprocess.call像下方的外壳脚本:如何运行置于不同的文件夹中从蟒

subprocess.call([“须藤./order_fc_prioritizer/run.sh”])

但它说没有这样的文件或目录

+0

你能告诉我们你的目录结构是什么样子吗? – 2015-03-13 12:20:32

回答

1

您可以使用绝对,而不是相对,文件路径到您的脚本。

0

传递一个列表以call()与命令和参数分成单独的列表元素:

subprocess.call(['sudo', './order_fc_prioritizer/run.sh']) 

参见文档,部分Frequently Used Arguments

args是所有调用所必需的,并且应该是字符串或程序参数的序列 。提供参数序列通常首选为 ,因为它允许模块处理任何所需的参数转义和引用(例如允许文件名称中的空格) 。如果传递单个字符串,则任何一个shell都必须为True(请参见下面的 ),否则字符串必须简单地命名要执行的程序 而不指定任何参数。

你也可以使用shlex.split()创建参数列表:

import shlex 

subprocess.call(shlex.split('sudo ./order_fc_prioritizer/run.sh')) 
0

您可以考虑使用subprocess.Popen()

基本上subprocess.call()仅仅是一个辅助函数:

proc = subprocess.Popen(cmd, cwd=PATH) 
proc.wait() 

但Popen()有一个关键字参数cwd,这是工作总监y在哪里执行命令(产生进程)。

相关问题