我正在尝试以另一个“用户”身份从 python 执行命令:
command = "sudo su user -c player --standard=1 -o 2"
subprocess.Popen(command.split(), shell=False, stdin=None, stdout=None, stderr=None, close_fds=True)
但是 -c 之后的一切都会引起麻烦。 知道如何为我的程序播放器执行带有参数的命令吗?
当我用“player --standard=1 -o 2”创建单独的 2.py 脚本时(当然是在子进程中)并通过“sudo su user -c/home/user/2”从我的第一个脚本调用这个脚本.py”,它工作正常。
最佳答案
command.split()
生成列表 ['sudo', 'su', 'user', '-c', 'player', '--standard=1' , '-o', '2']
,这不是您需要的。 su
期望命令在 -c
之后作为单个参数运行。
最简单的做法可能是手动构造列表,而不使用 split()
:
command = ['sudo', 'su', 'user', '-c', 'player --standard=1 -o 2']
如果你真的想从一个字符串开始,shlex
模块会很有帮助:
import shlex
command = shlex.split("sudo su user -c 'player --standard=1 -o 2'")
关于python - sudo su user -c 参数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42344115/