【问题标题】:Does Python have a module for scripting command line tasks?Python 是否有用于编写命令行任务脚本的模块?
【发布时间】:2012-02-28 12:23:05
【问题描述】:

模块的 Python 是否适用于脚本命令行任务?

我对可以发出命令、解析输出的东西感兴趣,尤其是与成功、失败或进度相关的东西,并根据结果发送电子邮件。

有没有特别适合这个的模块?

【问题讨论】:

    标签: python command-line module automation command


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      subprocess 很好,在标准库中。还有其他外部模块可以使与命令行任务的交互变得愉快。

      • pbs 在最具创新性的 API 中排名第一。
      • shellout 紧随其后。

      【讨论】:

      • pbs 看起来很整洁。非常 Pythonic!
      【解决方案3】:

      使用 suprocessshlex 模块的代码段:

      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()

      【讨论】:

        【解决方案4】:

        这看起来可能会做你想做的事:https://github.com/amoffat/pbs

        GitHub 页面上的文档有一些很好的示例。另外,我还没有使用过这个,但是从网上其他人那里读到他们真的很喜欢这个并且认为这优于子流程(无论出于何种原因)

        干杯。

        【讨论】:

          猜你喜欢
          • 2018-09-06
          • 2014-12-04
          • 1970-01-01
          • 2011-09-19
          • 2016-08-24
          • 1970-01-01
          • 1970-01-01
          • 2022-01-15
          • 2013-05-13
          相关资源
          最近更新 更多