我想在 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 许可协议
很难从你的问题中确定,但我敢打赌你的问题是 _反斜杠_。
[编辑添加:] 或者实际上可能更简单。你有没有在你的路径名周围加上引号?如果没有,那肯定行不通——但一旦你这样做了,你会发现你需要我在下面写的其余内容。
在 Windows 文件系统中,反斜杠
\
是分隔目录的标准方式。在 Python 字符串文字中,反斜杠
\
用于将难以输入的内容放入字符串中。例如,如果您正在编写单引号字符串并且希望在其中包含单引号,则可以这样做:'don\'t'
。或者如果你想要一个换行符,你可以这样做:'First line.\nSecond line.'
因此,如果您采用 Windows 路径名并将其插入 Python,如下所示:
那么实际传递给
os.startfile
的字符串将不包含那些反斜杠;它将包含一个换页符(来自\f
)和两个退格符(来自\b
s),这根本不是你想要的。您可以通过三种方式处理此问题。
您可以使用正斜杠代替反斜杠。尽管 Windows 更喜欢在其用户界面中使用反斜杠,但正斜杠也可以,而且它们在 Python 字符串文字中没有特殊含义。
您可以“转义”反斜杠:连续两个反斜杠表示一个实际的反斜杠。
os.startfile('C:\\foo\\bar\\baz')
您可以使用“原始字符串文字”。在开始的单引号或双引号之前放置
r
。这将使反斜杠不会被特殊解释。os.startfile(r'C:\foo\bar\baz')
最后一个可能是最好的, 除了 一个恼人的怪癖:反斜杠引号在原始字符串文字中仍然很特殊,所以你仍然可以说
'don\'t'
,这意味着你不能 结束 原始字符串文字一个反斜杠。