如何使用python在其默认程序中打开文件

新手上路,请多包涵

我想在 python 3.5 的默认应用程序中打开一个文件,特别是在记事本中的“screen.txt”。

我搜索了互联网,并在大多数答案中找到了 os.startfile(path) 。我尝试使用文件路径 os.startfile(C:\[directories n stuff]\screen.txt) 但它返回了一个错误,提示“行继续字符后出现意外字符”。我在没有文件路径的情况下尝试了它,只是文件的名称但它仍然没有用。

这个错误是什么意思?我以前从未见过它。

请提供打开有效的 .txt 文件的解决方案。

编辑:我在受限(学校)计算机上使用 Windows 7。

原文由 adam 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

很难从你的问题中确定,但我敢打赌你的问题是 _反斜杠_。

[编辑添加:] 或者实际上可能更简单。你有没有在你的路径名周围加上引号?如果没有,那肯定行不通——但一旦你这样做了,你会发现你需要我在下面写的其余内容。

在 Windows 文件系统中,反斜杠 \ 是分隔目录的标准方式。

在 Python 字符串文字中,反斜杠 \ 用于将难以输入的内容放入字符串中。例如,如果您正在编写单引号字符串并且希望在其中包含单引号,则可以这样做: 'don\'t' 。或者如果你想要一个换行符,你可以这样做: 'First line.\nSecond line.'

因此,如果您采用 Windows 路径名并将其插入 Python,如下所示:

 os.startfile('C:\foo\bar\baz')

那么实际传递给 os.startfile 的字符串将不包含那些反斜杠;它将包含一个换页符(来自 \f )和两个退格符(来自 \b s),这根本不是你想要的。

您可以通过三种方式处理此问题。

  • 您可以使用正斜杠代替反斜杠。尽管 Windows 更喜欢在其用户界面中使用反斜杠,但正斜杠也可以,而且它们在 Python 字符串文字中没有特殊含义。

  • 您可以“转义”反斜杠:连续两个反斜杠表示一个实际的反斜杠。 os.startfile('C:\\foo\\bar\\baz')

  • 您可以使用“原始字符串文字”。在开始的单引号或双引号之前放置 r 。这将使反斜杠不会被特殊解释。 os.startfile(r'C:\foo\bar\baz')

最后一个可能是最好的, 除了 一个恼人的怪癖:反斜杠引号在原始字符串文字中仍然很特殊,所以你仍然可以说 'don\'t' ,这意味着你不能 结束 原始字符串文字一个反斜杠。

原文由 Gareth McCaughan 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用默认程序打开文件的推荐方法是 os.startfile 。您可以使用 os.systemsubprocess 做一些更多的手动操作:

 os.system(r'start ' + path_to_file')

或者

subprocess.Popen('{start} {path}'.format(
    start='start', path=path_to_file), shell=True)

当然,这不会跨平台工作,但对于您的用例来说可能就足够了。

原文由 Mike Driscoll 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题