2016-04-21 2 views
1

Я хочу, чтобы моя программа python выполняла файл в Windows. Это означает, что если я попытаюсь выполнить файл .txt, он откроется с помощью программы просмотра .txt по умолчанию. Это возможно?Выполнение файлов в Windows с помощью Python

Я пробовал 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 viewer по умолчанию –

+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") 

, вероятно, плохая идея, потому что нет никакого способа узнать, если питон установлен по умолчанию для открытия * .py или если текстовый редактор или идеал установлен по умолчанию для открытия * .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

Даже если вы дважды щелкаете по файлу, требуется несколько секунд, чтобы открыть файл (если у вас нет удивительного процессора или SSD) ... –

2

Это запустит файл с зарегистрированным приложением для .txt расширений:

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

с подпроцессом вам нужно

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

поскольку start является частью оболочки.

Смежные вопросы