我正在使用subprocess.call,如下所示:
subprocess.call(['sudo ./order_fc_prioritizer/run.sh'])
但它说没有这样的文件或目录
答案 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,它是执行命令的工作目录(产生进程)。