如何从python运行cmd.exe命令?

时间:2017-02-27 15:49:59

标签: python python-3.x

我想运行一个打开GUI的脚本,我按下一个开始按钮,运行(打开,写入,运行)cmd.exe命令行。

from tkinter import* 
import sys, string, os
import subprocess
class App:
  def __init__(self, master):
    frame = Frame(master)
    frame.pack()

    self.slogan = Button(frame,text="Start",command=self.start)
    self.slogan.pack(side=LEFT)


  def start(self):
    subprocces.call([])

root = Tk()
app = App(root)
root.mainloop()

命令如下:" ConverterApp.exe" file1.x file1.y

ConverterApp放置在随机桌面文件夹中。什么是将一种类型的照片转换为另一种类型的照片。现在我必须为每张照片使用上面的命令,所以我想编写pyhton程序,它将文件夹中的所有.x文件转换为.y。

从我对这个话题的研究中我必须使用subprocess,对于如何使用它有点迷失。

3 个答案:

答案 0 :(得分:0)

您是否考虑过使用os.system来执行命令?它使用简单,可能足以完成您要做的事情。在Windows上,它通常会为您运行cmd.exe

  

OS。的系统命令

     
    

在子shell中执行命令(字符串)。这个     通过调用标准C函数系统()来实现,并具有     同样的限制。对sys.stdin等的更改不会反映出来     执行命令的环境。如果命令生成任何     输出,它将被发送到解释器标准输出流。

         

在Unix上,返回值是编码进程的退出状态     为wait()指定的格式。请注意,POSIX未指定     C system()函数的返回值的含义,所以返回     Python函数的值取决于系统。

         

在Windows上,返回值是系统shell返回的值     运行命令后。 shell由Windows环境提供     变量COMSPEC:它通常是cmd.exe,它返回退出状态     命令运行;在使用非本机shell的系统上,请咨询您的     shell文档。

         

子进程模块为产卵提供了更强大的功能     新流程并检索其结果;使用该模块是     比使用这个功能更好。请参阅更换旧功能     使用子流程文档中的子流程模块部分     一些有用的食谱。

         

可用性:Unix,Windows。

  

答案 1 :(得分:0)

使用 subprocess 模块。

Python 2:https://docs.python.org/2/library/subprocess.html

示例:

import subprocess
subprocess.call('ConverterApp.exe', 'file1.x', 'file1.y'])

Python 3:https://docs.python.org/3/library/subprocess.html

您仍然可以使用subprocess.call,但对于Python版本> 3.4,最好使用较新的subprocess.run

示例:

import subprocess
subprocess.run(['ConverterApp.exe', 'file1.x', 'file1.y'])

注意:在subprocess.callsubprocess.run中,您的命令应作为序列(即列表)传递。

答案 2 :(得分:-1)

以下是我经常在运行Windows命令时方便使用的代码段。

import subprocess
result = []
win_cmd = 'ipconfig'
process = subprocess.Popen(win_cmd,
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE )
for line in process.stdout:
    print line
result.append(line)
errcode = process.returncode
for line in result:
    print line