我希望使用Python获得这个shell命令的输出:
loginctl show-session -p Display -p Active c2产出如下:
Display=:0
Active=yes在Python中,我是这样做的:
import subprocess
subprocess.call(['loginctl', 'show-session -p Display -p Active c2'])我知道这个错误:
Unknown operation show-session -p Display -p Active c2可能是什么原因?
发布于 2016-05-01 10:49:57
subprocess.call(['loginctl', 'show-session', '-p', 'Display', '-p', 'Active', 'c2'])或者,如果您对基本的shell拆分感到满意:
import shlex
cmd = 'loginctl show-session -p Display -p Active c2'
subprocess.call(shlex.split(cmd))如果将用户输入直接发送到str.split或shlex.split,并将结果与subprocess一起使用,则要小心,这样很容易绕过。
添加shell = True也应该有效,但是有相当多的副作用,请参阅官方文件和这个StackOverflow的答案。
发布于 2016-05-01 10:45:30
尝试使用shell = True
import subprocess
subprocess.call('loginctl show-session -p Display -p Active c2', shell= True)输出:
Display=:0
Active=yeshttps://stackoverflow.com/questions/36965709
复制相似问题