我正在运行此代码:
#!/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>
如果我把路线改成
path = 'D:\work\Kindle\srcs\\test1.html'
(注意双字)一切正常。
为什么?分隔符是“\”还是不是,不是混合?
系统。Windows764位, win32上的Python 2.7(r27:825252010年7月4日,09:01:59)[MSC v.1500 32位(Intel)]
选中-并且所有反斜杠都正确显示。
对Windows路径使用原始字符串:
否则,字符串的
\t
部分将被解释为制表符。你需要用一个额外的反斜杠来转义路径中的反斜杠。。。就像你为
'\\test1.html'
做的那样。'\t'
是制表符的转义序列。'D:\work\Kindle\srcs\test1.html
本质上是'D:\work\Kindle\srcs est1.html'
。您还可以使用原始文本,
r'\test1.html'
扩展为:当下一个字符组合将产生特殊含义时,反斜杠是转义字符。举以下例子:
当r、n和b前面有反斜杠时,它们都有特殊的含义。t也是如此,它会产生一个tab。为了保持一致性,您需要A.将所有反斜杠加倍,因为
'\\'
将生成反斜杠,或者B.使用原始字符串:r'c:\path\to\my\file.txt'
。前面的r将提示解释器不要将反斜杠计算为转义序列,从而防止\t
显示为制表符。相关问题 更多 >
编程相关推荐