commandwrapper是一個Python模塊來包裝一個shell命令轉換為Python線程對象。
用法:
要啟動以下的bash命令在一個線程:
[用戶@本地〜] $ ls -l命令| grep的PDF |廁所-l
五
這裡是你如何能做到這一點:
>>> LS = WrapCommand('ls -l命令“)
>>> GrepPdf = WrapCommand('grep的PDF“)
>>> Wc中= WrapCommand('WC -l“)
>>> Wc.stdin = GrepPdf
>>> GrepPdf.stdin = LS
>>> Wc.start()
>>> #Do東西
...
>>> Wc.join()
>>> Wc.results
('5 N','')
在“結果”性是一個元組(stdoutdata,stderrdata)
你也可以這樣來做:
>>> LS = WrapCommand('ls -l命令| grep的PDF |廁所-l',殼=真)
>>> Ls.start()
>>> #Do東西
>>> Ls.join()
>>> Ls.results [0]
“5 N'
你需要指定'的shell =真',當你想執行的命令實際上是內置在外殼。即:在Windows上,如果你使用內置的命令,如“目錄”或“複製”:http://docs.python.org/library/subprocess.html#subprocess.Popen
這樣做在一個線程的目的是當上面的命令可能需要幾個小時,要在同時執行其他任務。您可以檢查過程中仍與運行:
>>> Wc.is_alive()
假
“真”,如果將仍在運行中返回。過早地終止(即它僵持)你有'終止()','殺()'或'send_signal(信號)方法,它們是自講。當你想等待線程結束,使用“連接()”方法:http://docs.python.org/library/threading.html#threading.Thread.join
要啟動以下的bash命令無螺紋:
[用戶@本地〜] $ ls -l命令| grep的PDF |廁所-l
五
這裡是你如何能做到這一點:
>>> LS = WrapCommand('ls -l命令“)
>>> GrepPdf = WrapCommand('grep的PDF“)
>>> Wc中= WrapCommand('WC -l“)
>>> WC(GrepPdf(LS))
“5 N'
避免這樣做了,其中有大量的數據在每個命令之間的管道的過程。
相反,這樣來做:
>>> LS = WrapCommand('ls -l命令| grep的PDF |廁所-l',殼=真)
>>> LS()
“5 N'
身高:螺紋方法來代替,如果這可能需要很長的時間,要在同時執行其他任務。
您可以指定另一個shell運行命令:
>>> LS = WrapCommand('ls'的,殼=真,可執行=“C:/windows/System32/WindowsPowerShell/v1.0/powershell.exe”)
>>>打印LS()
 目錄:C:用戶伊夫 python_tests
模式LastWriteTime長度名字
---- ------------- ------ ----
-a --- 27/01/2011 00:14 7006 commandwrapper.py
-a --- 27/01/2011 00:15 7048 commandwrapper.pyc
您還可以使用上下文管理(with_item):http://docs.python.org/reference/compound_stmts.html#grammar-token-with_item
例如:
>>>與WrapCommand('ls -l命令“)作為LS:
...與WrapCommand('grep的PDF“)為GrepPdf:
...與WrapCommand('WC -l“)為WC:
... Wc.stdin = GrepPdf
... GrepPdf.stdin = LS
... Wc.start()
... #Do東西
... Wc.join()
...
>>> Wc.results
('5 N','')
你也可能只是希望有一個子OBJET:
>>> LS = WrapCommand('ls -l命令“)
>>> lscmd = ls.makeCmd()
>>>
返回的對象(在上面的例子lscmd)是一個標準的subprocess.Popen對象
WrapOnceCommand是一樣WrapCommand,但CMD屬性,它是一個subprocess.Popen對象將被創建一勞永逸因此運行梅索德(或對象)只能被調用一次。它在一個線程啟動命令,並有此命令輕鬆啟動/目標從其他地方停止
什麼在此版本中是新的:
- 在改變了作者的聯繫信息。
什麼在0.4版本的新:
- 在這裡的警告:HTTP://docs.python。組織/參考/ datamodel.html#對象.__德爾__
- 而becasue哪裡都不如這裡所描述的垃圾收集器刪除automaticaly銷毀對象:http://docs.python.org/library/gc.html#gc.garbage可能導致內存使用率增加
要求:
- 在Python中
評論沒有發現