2016-04-21 86 views
1

我想讓我的python程序在Windows中執行一個文件。這意味着如果我嘗試執行.txt文件,它將以默認的.txt查看器打開。那可能嗎?用Python在windows中執行文件

我試過subprocess.call,但我得到WindowsError: [Error 193] %1 is not a valid Win32 application。我試圖運行的文件是.png文件。

+0

你可以發佈更多關於你傳遞給'subprocess.call'和完整的追溯?答案可能在那裏! – mprat

+0

@mprat'subprocess.call([「C:\\ Path \\ To \\ png_file.png」])'希望它會使用默認的png查看器 –

+0

執行,您需要使用'subprocess.call(「file。 png「,shell = True)'或'os.system(」file.png「)'而不是 –

回答

4
os.startfile("myText.txt") #open text editor 
os.startfile("myText.pdf") #open in pdf viewer 
os.startfile("myText.html") #open in webbrowser 

是你應該怎麼做這個

然而

os.startfile("my_prog.py") 

可能是一個壞主意,因爲沒有辦法知道是否Python是設置爲默認打開*的.py或如果一個texteditor或ide被設置爲默認打開* .py

+0

謝謝,這就是我一直在尋找。沒有cmd窗口,只是簡單地啓動文件 –

1

假設您有一個文件myText.txt
如果您想通過命令行打開該文件,您可以簡單地寫入~$ myText.txt
所以在Python中,你可以運行一個打開文件的cmd命令。說:

import os 
os.system("myText.txt") #Requires myText.txt and the python file to be in same folder. Otherwise full path is required. 

這將打開默認編輯器中的文件,或者如果它是一個exe文件,只需運行它。

+0

cmd窗口已經打開了相當長的一段時間(大約5秒),但它完成了這項工作。謝謝! –

+0

即使當你雙擊一個文件,它需要幾秒鐘來打開文件(除非你有一個驚人的CPU或SSD)... –

2

這將啓動與註冊的應用程序的文件擴展名.txt

import os 
os.system("start myText.txt") 

與子你需要

subprocess.call("start myText.txt", shell=True) 

因爲start是外殼的一部分。