import psutil
for p in psutil.process_iter():
if p.name() == 'foo':
print p.cmdline()
print ' '.join(p.cmdline())
PROCESS:
foo -p "Hello World"
RESULT:
['foo', '-p', 'Hello World']
foo -p Hello World
我希望获得foo -p "Hello World"
中的流程的原始命令行,我尝试使用cmdline()
,但它提供了参数标记化,我不感兴趣,并加入它们从结果的第二次印刷中可以看出,它不会一直产生预期的结果。
有没有办法以便携方式实现这一目标(可能使用其他库或以不同方式执行)?
这是为了与已存储的命令进行比较。我的问题的另一个解决方案可能是,如果我可以获得静态命令字符串(' '.join
)而没有args周围的引号来进行比较,那么只需foo -p "Hello World"
即可。意思是,如果有一个函数执行了psutil正在执行的shell参数标记化,它将解决我的命令比较问题。
答案 0 :(得分:0)
使用shlex.quote会将数组重组为shell命令行,写入空格和其他特殊字符。
答案 1 :(得分:0)
通过一些工作,您可以在2.7中使用Lib /管道。 https://docs.python.org/2/library/pipes.html