Открыть текстовый файл с помощью блокнота в качестве файла справки в Python? - PullRequest
16 голосов
/ 30 мая 2011

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

Есть ли простой способ сделать это?

Ответы [ 6 ]

38 голосов
/ 30 мая 2011
import webbrowser
webbrowser.open("file.txt")

Несмотря на название, оно откроется в Блокноте, Gedit и так далее. Никогда не пробовал, но говорят, что работает.

Альтернативой является использование

osCommandString = "notepad.exe file.txt"
os.system(osCommandString)

или как подпроцесс:

import subprocess as sp
programName = "notepad.exe"
fileName = "file.txt"
sp.Popen([programName, fileName])

но в обоих этих последних случаях вам сначала нужно будет найти собственный текстовый редактор для данной операционной системы.

13 голосов
/ 25 января 2014
os.startfile('file.txt')

С Документация по питону :

это действует как двойной щелчок по файлу в проводнике Windows или предоставление имени файла в качестве аргумента команде start из интерактивной командной оболочки: файл открывается любым приложением (если оно есть), его расширение связано.

Таким образом, если ваш пользователь изменит свой текстовый редактор по умолчанию, например, на notepad ++, он будет использовать свои предпочтения вместо блокнота.

3 голосов
/ 30 мая 2011

Если вы хотите открыть файл справки с приложением, в настоящее время связанным с текстовыми файлами, которым может быть не notepad.exe, вы можете сделать это в Windows следующим образом:

import subprocess
subprocess.call(['cmd.exe', '/c', 'file.txt'])
2 голосов
/ 29 сентября 2013

Вы можете сделать это в одну строку:

import subprocess
subprocess.call(['notepad.exe', 'file.txt'])

Вы можете переименовать notepad.exe в любом редакторе.

0 голосов
/ 28 декабря 2018

Если кто-то получает экземпляр Internet Explorer, когда он использует import webbrowser, попробуйте объявить полный путь к указанному файлу.

import webbrowser
import os

webbrowser.open(os.getcwd() + "/path/to/file/in/project")
#Gets the directory of the current file, then appends the path to the file

Пример:

import webbrowser
import os

webbrowser.open(os.getcwd() + "/assets/ReadMe.txt")
#Will open something like "C:/Users/user/Documents/project/assets/ReadMe.txt"
0 голосов
/ 19 октября 2018

Если у вас есть какой-либо предпочтительный редактор, вы можете сначала попробовать открыть его или открыть в редакторе по умолчанию.

ret_val = os.system("gedit %s" % file_path)
if ret_val != 0:
    webbrowswer.open(file_path)

В приведенном выше коде я сначала пытаюсь открыть свой файл в редакторе gedit, который является моим предпочтительным редактором. Если в системе не установлен gedit, он просто открывает файл в системном редакторе по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...