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

2024-05-18 13:57:25 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我在网上搜索了一下,在大多数答案上都找到了os.startfile(path)。我用文件的路径os.startfile(C:\[directories n stuff]\screen.txt)尝试了这个方法,但是它返回了一个错误,说“一行接一行的连续字符意外”。我试过没有文件路径,只是文件名,但仍然没有成功。

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

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

编辑:我在一台受限制的(学校)计算机上使用Windows7。


Tags: 文件path方法答案路径txt应用程序os
3条回答

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

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

或者

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

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

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

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

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

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

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

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

然后,实际传递给os.startfile的字符串将不包含这些反斜杠;它将包含一个表单馈送字符(来自\f)和两个退格字符(来自\b),这根本不是您想要的。

你可以用三种方法来处理这个问题。

  • 可以使用正斜杠而不是反斜杠。尽管Windows在其用户界面中更喜欢反斜杠,但正斜杠也可以工作,而且它们在Python字符串文本中没有特殊意义。

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

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

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

例如,我在驱动器D上创建了文件"test file.txt":所以文件路径是'D:/test file.txt' 现在,我可以使用与该脚本关联的程序打开它:

import os
os.startfile('d:/test file.txt')

相关问题 更多 >

    热门问题