2016-03-01 56 views
0

我在這裏有一些代碼嘗試從Python打開cmd.exe並輸入一些命令行以供使用。Python中的子進程模塊到cmd.exe

這就是:

PDF= "myPDF" 
output= "my output TIF" 

def my_subprocess(command,c='C:\here'): 
    process = subprocess.Popen(command,stdout=subprocess.PIPE,shell=True,cwd=c) 
    communicate = process.communicate()[0].strip()  

my_subprocess('"cmd.exe" && "C:\\here\\myinfamous.bat" && "C:\\my directory and lines telling cmd to do stuff"'+ PDF + " " + output) 

當我的腳本的其餘部分運行,在命令提示符下甚至不對外開放,人們似乎沒有輸出或錯誤的。我的想法是,它甚至沒有運行cmd.exe命令,所以這些代碼都沒有進入創建最終輸出。

有沒有我不正確的做法?

謝謝。

+0

的可能的複製[Python的:在Windows上啓動新的命令提示符,然後等待它完成/退出](http://stackoverflow.com/questions/11615455/python-start-new-command-prompt-on -windows-and-wait-it-it-finish-exit) – Cripto

+0

[使用python運行windows shell命令]可能的副本(http://stackoverflow.com/questions/14894993/running-windows-shell-commands-with- python) –

+0

爲什麼你認爲你需要'cmd.exe'在這裏?它看起來像[XY問題](http://meta.stackexchange.com/a/66378/137096)。你想做什麼?你想運行一個bat文件嗎?你需要與它互動嗎?你想顯示一個PDF文件嗎?你需要等到pdf文檔關閉嗎? – jfs

回答

1

您需要subprocess.call

下面是使用記事本打開一個文本文件在Windows 8工作代碼來替換subprocess.Popen。第一場是命令本身,第二場是參數。

您可以修改這些文件並測試您的文件。

import subprocess 

subprocess.call(['C:\\Windows\\System32\\Notepad.exe', 'C:\\openThisfile.txt'])