如何创建;cmd";Python中的函数?
我正在尝试创建一个函数,该函数返回输出,因为命令将写入Windows或Linux中的命令行 示例:如何创建;cmd";Python中的函数?,python,shell,command-line,Python,Shell,Command Line,我正在尝试创建一个函数,该函数返回输出,因为命令将写入Windows或Linux中的命令行 示例: def cmd_simulator(commands): #some code cmd_simulator("date") - Thu Jan 28 12:18:05 EST 2016 或窗口: cmd_simulator("date") - The current date is: Thu 01/28/2016 - Enter the new date: (mm-dd-yy)
def cmd_simulator(commands):
#some code
cmd_simulator("date")
- Thu Jan 28 12:18:05 EST 2016
或窗口:
cmd_simulator("date")
- The current date is: Thu 01/28/2016
- Enter the new date: (mm-dd-yy)
您需要使用
子流程
模块来处理python脚本中的命令行。
如果您只需要获取命令的输出,则使用子流程。检查\u output(cmd)
cmd
是程序参数的序列(python列表)。因此,如果您的命令只包含一个单词(例如date
),那么它将使用cmd=“date”
。但是如果您有一个较长的命令(例如cmd=“grep'pattern”input_file.txt”
),那么它将不起作用,因为您需要拆分命令行的不同参数。为此,请使用shlex
模块:shlex.split(cmd)
将向子流程返回适当的序列
因此,cmd_模拟器的代码如下:
import subprocess
import shlex
def cmd_simulator(cmd):
return subprocess.check_output(shlex.split(cmd))
当然,您可以在这个函数中添加一些try/except来检查命令是否正常工作,等等
例如,如果您不仅需要命令的stdout,还需要stderr,那么您应该使用
subprocess.Popen(cmd)
您可以使用以下方法-
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
是否要将命令委托给控制台外壳?可能对您有用。
cmd\u simulator=lambda cmd:os.popen(cmd.read();打印命令(“日期”)