我想运行一个打开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
,对于如何使用它有点迷失。
答案 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.call
和subprocess.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