3
A
回答
3
對於python-2.7,參數不存儲在版本3.3中。你必須做的是記住它們或者做一個解決方法。
一種方法是從Popen
或簡單地圍繞Popen
寫的包裝寫你自己的繼承:
from subprocess import _Popen
def Popen(*args, **kwds):
res = _Popen(*args, **kwds)
if not hasattr(res, "args"):
res.args = args[0]
return res
當然,你可以存儲所有的位置和關鍵字參數,如果你想。在3.3之前args
屬性沒有被使用,但之後它是如此,你可能想要保護,因爲如上所示。
你甚至可以做一次檢查(啓動時)並使用一些猴子補丁。下面是一個繼承的例子:
from sys import version
import subprocess
class Popen(subprocess.Popen):
def __init__(self, *args, **kwds):
subprocess.Popen.__init__(self, *args, **kwds)
self.args = args[0]
if version[0] < 3 or (version[0]==3 and version[1] < 3): # pre 3.3
subprocess.Popen = Popen
3
如果你使用Python 3,command.args
是最簡單的方法:
from subprocess import Popen
command = Popen(['ls', '-l'])
print command.args
輸出:
['ls', '-l']
注意輸出是一個列表。
0
我有時這樣做!
import subprocess,
cmd = ["ls", "-a" ]
proc = subprocess.Popen(cmd, stdout = subprocess.PIPE)
stdout = proc.communicate()[0]
相關問題
- 1. 使用子進程運行命令管道.Popen
- 2. 從子進程調用「源」命令.Popen
- 3. python子進程popen運行多個命令
- 4. 重複命令與子進程.Popen
- 5. Python:如何在一個進程中使用popen運行多個命令
- 6. 子過程POPEN不執行命令
- 7. 如何使用子進程運行命令模塊?
- 8. 命令通過子進程運行.Popen需要輸入,但命令手動運行不會
- 9. 子進程運行時間.Popen實例
- 10. 爲Python子進程打印執行命令.Popen
- 11. 無法執行與子進程shell命令.Popen
- 12. 從子進程運行命令
- 13. 使用子進程執行ADB命令
- 14. POPEN遠程命令
- 15. 使用Popen獨立運行python子進程
- 16. subprocess popen運行命令(HDFS/hadoop)
- 17. popen telnet中的子命令
- 18. 使用Popen執行ffmpeg命令
- 19. 使用子進程從python運行終端命令
- 20. 使用Python的子進程模塊運行shell命令
- 21. 限制子進程一次運行的進程數.Popen
- 22. 如何從Web應用程序運行命令行進程?
- 23. 如何通過NodeJS子進程運行命令?
- 24. 如何在Python腳本的子進程中運行命令?
- 25. 如何使用ADB作爲後臺進程運行命令?
- 26. Python popen shell命令等到子進程完成
- 27. 如何使用「子進程」運行復雜的批處理命令
- 28. 使用python Popen或os.system運行多個adb命令
- 29. 運行使用POPEN
- 30. 如何從其他進程運行ConEmu實例運行命令
哦!我得到以下內容:AttributeError:'Popen'對象沒有屬性'args'你正在使用哪種版本的python? – Har
@哈哈,我正在使用Python 3.5。對不起,我會編輯我的答案;) –
@哈爾,我剛剛離開。似乎skyking已經發布了正確的答案。 –