通过Python使用命令提示符

时间:2015-04-16 01:11:05

标签: python command subprocess

我想创建一个脚本,打开一个命令提示符窗口,并在没有任何用户交互的情况下将命令输入到该提示符中。我一直在使用子进程模块,但收效甚微。到目前为止我所拥有的:

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文件,但正如我所说,没有任何内容出现。当我自己运行命令提示符时,它运行正常。

1 个答案:

答案 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'