用户桌面文件夹的格式错误的字符转义和 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 机器上。