You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中启用os.listdir打印语句后出现SyntaxError的原因

解决Python中os.listdir原始字符串引发的SyntaxError问题

兄弟,我一眼就瞅出问题根源了——你第一条print语句里的原始字符串末尾多了个反斜杠,这直接打乱了Python的语法解析逻辑,才会让错误提示看起来像是出在后面的print('c:\waste')行上,其实锅全在第一行的路径字符串上。

为什么会出现这个奇怪的报错?

Python的原始字符串(带r前缀)有个容易踩的坑:绝对不能以单个反斜杠结尾。因为原始字符串里的反斜杠会把紧随其后的引号(不管是单引号还是双引号)转义掉,导致整个字符串无法正确闭合。

你写的这条代码:

print(os.listdir(r"\\ftlengnas.eng.test.net\CWCDevops$\Dms\Staging\APS\Roles\\"))

末尾的那个反斜杠会把后面的双引号转义,Python会误以为这个字符串还没结束,它会把后面所有的代码(包括print('c:\waste')的内容)都当成这个超长字符串的一部分,自然就会抛出语法错误了。而你注释掉第一行后,后面的代码都是独立的语法单元,所以能正常运行,这完全符合这个逻辑。

怎么解决?

给你两个简单的解决方案:

  1. 去掉末尾的反斜杠:Windows路径末尾的反斜杠是可选的,os.listdir对带不带末尾反斜杠的路径都能正确识别,直接改成这样就行:
    print(os.listdir(r"\\ftlengnas.eng.test.net\CWCDevops$\Dms\Staging\APS\Roles"))
    
  2. 如果一定要保留末尾路径分隔符:可以用普通字符串转义所有反斜杠,或者用字符串拼接规避转义问题:
    # 方案A:普通字符串,所有反斜杠转成双反斜杠
    print(os.listdir("\\\\ftlengnas.eng.test.net\\CWCDevops$\\Dms\\Staging\\APS\\Roles\\"))
    # 方案B:原始字符串加空字符串拼接,避免末尾反斜杠转义引号
    print(os.listdir(r"\\ftlengnas.eng.test.net\CWCDevops$\Dms\Staging\APS\Roles\" + ""))
    

顺便提一句后面的代码

你后面的print('c:\waste')里,\w不是Python的有效转义字符,所以暂时不会出问题,但如果换成\n、\t这类有效转义符就会出意外了。所以推荐用原始字符串print(r'c:\waste')或者转义反斜杠print('c:\\waste'),这两种写法更安全。

内容的提问来源于stack exchange,提问作者AhmFM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:31:14