Ответ 1
Это зависит от версии используемого вами Python. В Python3.3 аргумент сохраняется в proc.args
:
proc = subprocess.Popen(....)
print("the commandline is {}".format(proc.args))
В Python2.7 args
не сохраняется, он просто передается на другие функции, такие как _execute_child
. Итак, в этом случае лучший способ получить командную строку - сохранить ее, когда она у вас есть:
proc = subprocess.Popen(shlex.split(cmd))
print "the commandline is %s" % cmd
Обратите внимание: если у вас есть список аргументов (например, тип вещи, возвращаемый shlex.split(cmd)
), вы можете восстановить строку командной строки, cmd
, используя недокументированную функцию subprocess.list2cmdline
:
In [14]: import subprocess
In [15]: import shlex
In [16]: cmd = 'foo -a -b --bar baz'
In [17]: shlex.split(cmd)
Out[17]: ['foo', '-a', '-b', '--bar', 'baz']
In [18]: subprocess.list2cmdline(['foo', '-a', '-b', '--bar', 'baz'])
Out[19]: 'foo -a -b --bar baz'