【发布时间】:2012-02-28 12:23:05
【问题描述】:
模块的 Python 是否适用于脚本命令行任务?
我对可以发出命令、解析输出的东西感兴趣,尤其是与成功、失败或进度相关的东西,并根据结果发送电子邮件。
有没有特别适合这个的模块?
【问题讨论】:
标签: python command-line module automation command
模块的 Python 是否适用于脚本命令行任务?
我对可以发出命令、解析输出的东西感兴趣,尤其是与成功、失败或进度相关的东西,并根据结果发送电子邮件。
有没有特别适合这个的模块?
【问题讨论】:
标签: python command-line module automation command
试试subprocess 模块。
【讨论】:
使用 suprocess 和 shlex 模块的代码段:
def runcommand(command):
args = shlex.split(command)
p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(stdoutdata, stderrdata) = p.communicate()
return (stdoutdata, stderrdata, p.returncode)
(outdata, errdata, returncode) = runcommand('/bin/ls -hl /tmp')
outlines = outdata.splitlines()
errlines = errdata.splitlines()
对于发送邮件,库文档中有很好的examples。
请注意,communicate() 将等到进程终止。对于进度,只需访问 Popen pid and streams 直接结合 poll() 或 wait()。
【讨论】:
这看起来可能会做你想做的事:https://github.com/amoffat/pbs
GitHub 页面上的文档有一些很好的示例。另外,我还没有使用过这个,但是从网上其他人那里读到他们真的很喜欢这个并且认为这优于子流程(无论出于何种原因)
干杯。
【讨论】: