我正在尝试编写一个脚本,打开一个文本文件,其中包含可以输入命令窗口的特定行。我试图使用子进程自动使命令运行,而不是让用户复制并粘贴这些行。 目前我的代码是:
import sys
from Tkinter import *
import tkFileDialog
import subprocess
master = Tk()
master.withdraw()
file_path = tkFileDialog.askopenfilename(title="Open command file")
print file_path
with open (file_path,"r") as infile:
cmd1 = infile.readline()
cmd2 = infile.readline()
cmd3 = infile.readline()
cmd4 = infile.readline()
p=subprocess.Popen("{}; {}; {}; {}".format(cmd1, cmd2, cmd3, cmd4), stdout=subprocess.PIPE)
for line in p.stdout:
print line
p.wait()
print p.returncode
print 'complete'
用户选择的文本文件有四个命令,它们都与以下内容类似:
program.exe commanduniquetoprogram "C:\\...." "C:\\...."
我不知道命令行是如何工作的,但是如果在命令窗口中运行,它甚至可以在不打开程序的情况下运行。就像现在一样,当我运行我的程序时,唯一可行的是第一部分program.exe
,因为它打开程序然后抛出一个奇怪的错误。相反,如果将行粘贴到命令窗口中,程序根本不会打开并完成其工作,这使我相信子进程不喜欢命令行中的空格。
感谢任何帮助,因为我没有子过程模块的经验!