用户桌面文件夹的格式错误的字符转义和 python expandvars
Malformed Character escape and python expandvars for user desktop folders
在Python中使用os.path.expandvars时;我在访问 Document 文件夹或 AppData 文件夹时没有遇到太多问题,但在尝试访问 Desktop 文件夹时系统会抛出以下错误。
是否需要另一个变量,或者桌面与其他位置是否真的需要双重转义符“\ \”?
if os.path.exists(os.path.join(os.path.expandvars("%userprofile%"),"Desktop"))==True:
print("yes")
#No issue with this: returns True
if os.path.exists(os.path.join(os.path.expandvars("%userprofile%"),"Desktop\NF"))==True:
^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 7-8: malformed \N character escape
#Need help understanding why an escape is needed for this location
^
if os.path.exists(os.path.join(os.path.expandvars("%userprofile%"),"Documents\Videos"))==True:
print("yes")
#No issue with this: returns True
桌面文件夹 NF 确实存在,并且在尝试使用代码访问之前就已经存在。
Python 使用 \N 序列表示由其名称标识的 unicode 字符:
print('\N{LATIN CAPITAL LETTER A}')
A
因此,如果字符串包含未开始 '\N{name}'
转义的序列 '\N'
,则会引发 SyntaxError
,除非 '\N'
被转义:
'Deskstop\New'
或者是原始字符串的一部分
r'Deskstop\New'
或者,如果反斜杠是路径分隔符,则替换为正斜杠
'Desktop/New'
我怀疑 os.path.join
或其 pathlib
等价物如果像这样使用会正确处理这种情况:
os.path.join(os.path.expandvars("%userprofile%"),"Desktop", "New")
但我不能 100% 确定,因为我不在 Windows 机器上。
在Python中使用os.path.expandvars时;我在访问 Document 文件夹或 AppData 文件夹时没有遇到太多问题,但在尝试访问 Desktop 文件夹时系统会抛出以下错误。
是否需要另一个变量,或者桌面与其他位置是否真的需要双重转义符“\ \”?
if os.path.exists(os.path.join(os.path.expandvars("%userprofile%"),"Desktop"))==True:
print("yes")
#No issue with this: returns True
if os.path.exists(os.path.join(os.path.expandvars("%userprofile%"),"Desktop\NF"))==True:
^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 7-8: malformed \N character escape
#Need help understanding why an escape is needed for this location
^
if os.path.exists(os.path.join(os.path.expandvars("%userprofile%"),"Documents\Videos"))==True:
print("yes")
#No issue with this: returns True
桌面文件夹 NF 确实存在,并且在尝试使用代码访问之前就已经存在。
Python 使用 \N 序列表示由其名称标识的 unicode 字符:
print('\N{LATIN CAPITAL LETTER A}')
A
因此,如果字符串包含未开始 '\N{name}'
转义的序列 '\N'
,则会引发 SyntaxError
,除非 '\N'
被转义:
'Deskstop\New'
或者是原始字符串的一部分
r'Deskstop\New'
或者,如果反斜杠是路径分隔符,则替换为正斜杠
'Desktop/New'
我怀疑 os.path.join
或其 pathlib
等价物如果像这样使用会正确处理这种情况:
os.path.join(os.path.expandvars("%userprofile%"),"Desktop", "New")
但我不能 100% 确定,因为我不在 Windows 机器上。