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中
评论没有发现