【发布时间】:2017-09-20 13:45:03
【问题描述】:
Python3 子进程调用不起作用
import subprocess
subprocess.call("sudo nautilus")
【问题讨论】:
标签: python python-3.x
Python3 子进程调用不起作用
import subprocess
subprocess.call("sudo nautilus")
【问题讨论】:
标签: python python-3.x
试试这个:
subprocess.call(["sudo", "nautilus"])
【讨论】:
您必须使用 shell = true 才能使其在 shell 中工作
import subprocess
subprocess.call("sudo nautilus", shell=True)
或者你可以将它作为一个列表输出
subprocess.call(["sudo", "nautilus"])
【讨论】:
shell=True 使您的代码 subprocess.call(["sh", "-c", "sudo nautilus"]) -- shell=True(在 UNIX 上)字面上将参数附加到硬编码列表 ['sh', '-c'],添加了一个额外的间接层,这意味着所有的低效率. (由于间接层将字符串解析为代码,因此如果将值替换到正在调用的命令行中,它也会产生安全影响。
尝试设置shell=True,所以:
subprocess.call("sudo nautilus",shell=True)
【讨论】:
shell=True 使您的代码 subprocess.call(["sh", "-c", "sudo nautilus"]) -- shell=True(在 UNIX 上)将参数附加到硬编码列表 ['sh', '-c'],添加了一个额外的间接层,所有的低效率都意味着. (由于间接层将字符串解析为代码,因此如果将值替换到正在调用的命令行中,它也会产生安全影响。