#python
#python
Вопрос:
>>> import subprocess
>>> subprocess.Popen("pwd")
<subprocess.Popen object at 0xa7692cc>
>>> subprocess.call(["ls", "-l"])
0
Я попробовал приведенную выше команду в интерактивной оболочке Python и ожидаю увидеть вывод
внутри среды оболочки. Однако в итоге получается только несколько возвращаемых значений.
Что я должен сделать, чтобы возвращаемые результаты печатались внутри оболочки?
Ответ №1:
Сначала было бы полезно прочитать документацию.
p = subprocess.Popen('pwd', stdout = subprocess.PIPE)
p.communicate() # returns (stdout, None)
Ответ №2:
Cat Plus Plus прав, однако, если вы предпочитаете call
функцию, вы также можете сделать это следующим образом:
import subprocess
import sys
subprocess.call('pwd', stdout=sys.stdout) # outputs results of `pwd` to stdout
Комментарии:
1.
import subprocess, sys subprocess.call('pwd', stdout=sys.stdout) Traceback (most recent call last): File "<input>", line 1, in <module> File "/usr/lib/python2.6/subprocess.py", line 480, in call return Popen(*popenargs, **kwargs).wait() File "/usr/lib/python2.6/subprocess.py", line 626, in __init__ errread, errwrite) = self._get_handles(stdin, stdout, stderr) File "/usr/lib/python2.6/subprocess.py", line 983, in _get_handles c2pwrite = stdout.fileno() AttributeError: PseudoFileOut instance has no attribute 'fileno'
2. Что вы имеете в виду? Похоже, я не могу запустить решение, предоставленное Adam.