【问题标题】:How to create "cmd" function in Python?如何在 Python 中创建“cmd”函数?
【发布时间】:2016-05-06 04:36:42
【问题描述】:

我正在尝试创建一个返回输出的函数,因为命令将写入 WindowsLinux 的命令行?

示例:

def cmd_simulator(commands):
    #some code

cmd_simulator("date")

- Thu Jan 28 12:18:05 EST 2016

或 Windows:

cmd_simulator("date")

- The current date is: Thu 01/28/2016
- Enter the new date: (mm-dd-yy)

【问题讨论】:

  • 您想将您的命令委托给控制台外壳吗?
  • subprocess.check_output 可能对你有用。
  • cmd_simulator=lambda cmd:os.popen(cmd).read();print cmd_simulator("date")

标签: python shell command-line


【解决方案1】:

你可以用这个方法——

import subprocess

cmd_arg = "date"
proc = subprocess.Popen(cmd_arg,  stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
out, err = proc.communicate()

print(out) #Thu Jan 28 12:18:05 EST 2016

【讨论】:

    【解决方案2】:

    您需要使用subprocess 模块来处理python 脚本中的命令行。 如果您唯一需要的是获取命令的输出,请使用subprocess.check_output(cmd)

    cmd 是程序参数的序列(python 列表)。因此,如果您的命令只包含一个单词(例如date),它将使用cmd="date"。但是如果你有一个更长的命令(例如cmd="grep 'pattern' input_file.txt"),那么它将不起作用,因为你需要拆分你的命令行的不同参数。为此,请使用shlex 模块:shlex.split(cmd) 将向子进程返回适当的序列。

    因此,您的 cmd_simulator 的代码将类似于:

    import subprocess
    import shlex
    
    def cmd_simulator(cmd):
        return subprocess.check_output(shlex.split(cmd))
    

    当然,你可以在这个函数中添加一些 try/except 来检查命令是否有效,等等。

    如果您不仅需要命令的标准输出,还需要例如标准错误,那么您应该使用subprocess.Popen(cmd)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-25
      • 2015-12-07
      • 1970-01-01
      • 1970-01-01
      • 2018-12-31
      • 2017-02-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多