如何从python运行放置在不同文件夹中的shell脚本

时间:2015-03-13 12:17:24

标签: python

我正在使用subprocess.call,如下所示:

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

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

3 个答案:

答案 0 :(得分:1)

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

答案 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'))

答案 2 :(得分:0)

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

基本上subprocess.call()只是一个帮助函数:

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

但是Popen()有一个关键字参数cwd,它是执行命令的工作目录(产生进程)。