很难从您的问题上确定当前的状况,但是我敢打赌,您的问题是 反斜线 。
[编辑添加:]或者实际上也许更简单一些。您是否在路径名两边加上了引号?如果没有,那肯定是行不通的-但是一旦您做得到,您将发现您需要我在下面写的其余内容。
在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'
,这意味着您不能以反斜杠结束 原始字符串文字。