使用记事本打开文本文件作为python中的帮助文件?

Ben*_*Ben 17 python

我想为我的简单程序的用户提供打开帮助文件的机会,以指导他们如何充分利用我的程序.理想情况下,我想在我的GUI上有一个蓝色的小帮助链接,可以随时点击,导致.txt文件在本机文本编辑器中打开,例如记事本.

有一个简单的方法吗?

谢谢!

Mát*_*ond 40

import webbrowser
webbrowser.open("file.txt")
Run Code Online (Sandbox Code Playgroud)

尽管它的名字,它将在记事本,gedit等打开.从未尝试过,但据说它有效.

另一种方法是使用

osCommandString = "notepad.exe file.txt"
os.system(osCommandString)
Run Code Online (Sandbox Code Playgroud)

或作为子流程:

import subprocess as sp
programName = "notepad.exe"
fileName = "file.txt"
sp.Popen([programName, fileName])
Run Code Online (Sandbox Code Playgroud)

但是在后面这两种情况下,您首先需要找到给定操作系统的本机文本编辑器.

  • “浏览器”思维的创造力+1。我还建议查看[这个问题](http://stackoverflow.com/questions/434597/open-document-with-default-application-in-python) (3认同)
  • 请注意,出于安全原因,现在不鼓励使用`os.system()`. (2认同)
  • 根据`webbrowser`文档:"请注意,在某些平台上,尝试使用此函数打开文件名,可能会起作用并启动操作系统的相关程序.但是,这既不支持也不可移植." 所以这可能适用于Unix,但可能无法在Windows上运行. (2认同)
  • @AdamStewart 我在 Mac 上,它默默地对我没有任何作用。 (2认同)

Phi*_*lip 14

os.startfile('file.txt')
Run Code Online (Sandbox Code Playgroud)

python文档:

这类似于在Windows资源管理器中双击文件,或者从交互式命令shell 将文件名作为参数提供给start命令:文件将打开,其中任何应用程序(如果有)与其扩展名相关联.

这样,如果您的用户将其默认文本编辑器更改为例如notepad ++,它将使用他们的首选项而不是记事本.

  • 这是一个很好的方法,但它仅适用于 Windows。在 unix 环境中,您可能最好使用 os.system('$EDITOR <filename>') (2认同)

Abh*_* py 5

您可以在一行中完成此操作:

import subprocess
subprocess.call(['notepad.exe', 'file.txt'])
Run Code Online (Sandbox Code Playgroud)

您可以将 notepad.exe 重命名为您选择的编辑器。