问题
在一次给open函传参时,传带有\的路径时,总是抱有一异常问题,异常问题为:
File"C:/Users/keke/PycharmProjects/untitled/4moth/427/testline.py", line 7
string = 'C:\Users\keke\Desktop\python\p10c07\logs\access.log'
SyntaxError: (unicode error) 'unicodeescape' codec can't
decode bytes in position 2-3: truncated \UXXXXXXXX escape
处理问题
经过报错可知:SyntaxError:(unicode错误)’unicodeescape’编解码器无法解码位置2-3中的字节:截断\ UXXXXXXXX转义。
通过验证:
from pathlib import Path
p = Path(r'C:\Users\keke\Desktop\python\p10c07\logs\access.log')
string = 'C:\Users\keke\Desktop\python\p10c07\logs\access.log'
if string == str(p):
print('OK')
报错:
File"C:/Users/keke/PycharmProjects/untitled/4moth/427/testline.py", line 7
string = 'C:\Users\keke\Desktop\python\p10c07\logs\access.log'
^
SyntaxError: (unicode error) 'unicodeescape' codec
can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
很显然问题出在\上,其实在任何字符串或者编程语言中都要注意特殊字符\,只出现\时,要验证是否需要转义。
验证转义
将代码修改为如下设置:
from pathlib import Path
p = Path(r'C:\Users\keke\Desktop\python\p10c07\logs\access.log')
s = '''C:\\Users\\keke\\Desktop\\python\\p10c07\\logs\\access.log'''
st = 'C:\\Users\\keke\\Desktop\\python\\p10c07\\logs\\access.log'
if s == str(p):
print('OK')
with open(str(p),'r+') as f1:
for line in f1:
print(line)
with open(s,'r+') as f2:
for line in f2:
print(line)
with open(st,'r+') as f3:
for line in f3:
print(line)
验证通过