Python Windows上的奇怪路径分隔符

Python Windows上的奇怪路径分隔符,python,windows,filepath,Python,Windows,Filepath,我需要运行以下代码: #!/usr/bin/python coding=utf8 # test.py = to demo fault def loadFile(path): f = open(path,'r') text = f.read() return text if __name__ == '__main__': path = 'D:\work\Kindle\srcs\test1.html' document = loadFile(pat

我需要运行以下代码:

#!/usr/bin/python      coding=utf8
#  test.py = to demo fault
def loadFile(path):
    f = open(path,'r')
    text = f.read()
    return text
if __name__ == '__main__':
    path = 'D:\work\Kindle\srcs\test1.html'
    document = loadFile(path)
    print len(document)
它给了我一个回溯

D:\work\Kindle\Tests>python.exe test.py
Traceback (most recent call last):
  File "test.py", line 11, in <module>
    document = loadFile(path)
  File "test.py", line 5, in loadFile
    f = open(path,'r')
IOError: [Errno 22] invalid mode ('r') or filename: 'D:\\work\\Kindle\\srcs\test1.html'

D:\work\Kindle\Tests>
(注意双\\)一切正常

为什么??分隔符是“\”还是不是,不是混合

系统。Windows 7,64位, win32上的Python 2.7(r27:825252010年7月4日09:01:59)[MSC v.1500 32位(英特尔)]


选中-所有反斜杠显示正确

您需要在带有额外反斜杠的路径中转义反斜杠。。。就像您为
'\\test1.html'
所做的那样

“\t”
是制表符的转义序列

'D:\work\Kindle\srcs\test1.html
本质上是
'D:\work\Kindle\srcs est1.html'

您还可以使用原始文本,
r'\test1.html'
扩展为:

'\\test1.html'

对Windows路径使用原始字符串:

path = r'D:\work\Kindle\srcs\test1.html'

否则,字符串的
\t
部分将被解释为制表符。

反斜杠
\
是Python中的一个字符。因此,您的实际文件路径将是
D:\work\Kindle\srcsest1.html
。使用os.sep,使用
\\
转义反斜杠,或者使用
r'some text'
使用原始字符串。当下一个字符组合产生特殊含义时,反斜杠是转义字符。举以下例子:

>>> '\r'
'\r'
>>> '\n'
'\n'
>>> '\b'
'\x08'
>>> '\c'
'\\c'
>>>

r、 n和b前面加反斜杠时都有特殊含义。t也是如此,它将生成一个制表符。您需要A.将所有反斜杠加倍,以保持一致性,因为
'\\'
将产生反斜杠,或者B.使用原始字符串:
r'c:\path\to\my\file.txt'
。前面的r将提示解释器不要将反斜杠作为转义序列进行计算,从而防止
\t
显示为选项卡。

除了使用原始字符串(带有r字符的前缀字符串),在构建路径名时,os.path模块可能有助于自动提供操作系统正确的斜杠。

提供了一个有趣的概述。

您可以使用正斜杠路径分隔符,甚至在Windows(或者DOS)中也是如此。看见
>>> '\r'
'\r'
>>> '\n'
'\n'
>>> '\b'
'\x08'
>>> '\c'
'\\c'
>>>