我想为我的简单程序的用户提供打开帮助文件的机会,以指导他们如何充分利用我的程序。理想情况下,我想在我的GUI上有一个蓝色的小帮助链接,可以随时点击,导致.txt文件在本机文本编辑器中打开,例如记事本。
有一种简单的方法吗?
答案 0 :(得分:36)
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])
但是在后面这两种情况下,您首先需要找到给定操作系统的本机文本编辑器。
答案 1 :(得分:10)
os.startfile('file.txt')
这就像在Windows资源管理器中双击文件,或者从交互式命令shell中将文件名作为参数提供给 start 命令一样:文件随任何应用程序打开(如果有的话)它的扩展名是相关联的。
这样,如果您的用户将默认文本编辑器更改为例如notepad ++,它将使用他们的首选项而不是记事本。
答案 2 :(得分:3)
如果您想使用当前与文本文件相关联的应用程序(可能不是notepad.exe)打开帮助文件,您可以在Windows上以这种方式执行此操作:
import subprocess
subprocess.call(['cmd.exe', '/c', 'file.txt'])
答案 3 :(得分:2)
您可以在一行中执行此操作:
import subprocess
subprocess.call(['notepad.exe', 'file.txt'])
您可以将notepad.exe重命名为您选择的编辑器。
答案 4 :(得分:0)
如果您有任何首选的编辑器,则可以先尝试在该编辑器中打开,或者在默认编辑器中打开。
ret_val = os.system("gedit %s" % file_path)
if ret_val != 0:
webbrowswer.open(file_path)
在上面的代码中,我首先尝试在gedit编辑器(我的首选编辑器)中打开文件,如果系统未安装gedit,它将在系统的默认编辑器中打开文件。
答案 5 :(得分:0)
如果任何人使用import webbrowser
时都在获取Internet Explorer的实例,请尝试声明指定文件的完整路径。
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"