我想创建一个脚本,打开一个命令提示符窗口,并在没有任何用户交互的情况下将命令输入到该提示符中。我一直在使用子进程模块,但收效甚微。到目前为止我所拥有的:
def subprocess_cmd(command):
process = Popen(command,stdout=PIPE, shell=True)
proc_stdout = process.communicate()[0].strip()
print proc_stdout
subprocess_cmd('"C:\system\cmd.exe" & C:\dir\mybat.bat & C:\dir\gdal_translate C:\dir2\mypdf.pdf C:\dir\mytif.tif')
现在它没有错误地运行,但没有任何反应。 dir2文件夹中应该有一个.tif文件,但正如我所说,没有任何内容出现。当我自己运行命令提示符时,它运行正常。
答案 0 :(得分:1)
我认为问题是你没有调用subprocess
类中的方法和常量。这在Python 3中适用于我:
import subprocess
def subprocess_cmd(command,c="C:\\Users\\Alex"):
process = subprocess.Popen(command,stdout=subprocess.PIPE,shell=True,cwd=c)
proc_stdout = process.communicate()[0].strip()
print(proc_stdout)
>>> subprocess_cmd('"cmd.exe" && "C:\\Users\\Alex\\test.bat"','C:\\Users\\Alex\\')
b'Microsoft Windows [Version 6.3.9600]\r\n(c) 2013 Microsoft Corporation. All rights reserved.\r\n\r\nC:\\Users\\Alex>\r\nC:\\Users\\Alex>mkdir thisisanewdirectory'
>>> subprocess_cmd('test.bat')
b'C:\\Users\\Alex>mkdir thisisanewdirectory'