os.path.exists返回错误结果:存在路径却返回False的问题排查
问题原因与解决办法
这问题我之前碰到过好多次,核心问题出在Python字符串里的反斜杠是转义字符,你的路径拼接逻辑被转义规则干扰了!
你写的'\android'里,\a会被Python解析成ASCII中的响铃控制字符(对应十六进制\x07),而不是你想要的字面\a。最终拼接出来的android_permission_path实际是Security\Permission\x07ndroid,这显然不是你硬盘上真实存在的路径,os.path.exists()自然返回False。
三种解决方法,任选其一即可:
用原始字符串(最推荐):在字符串前加
r,让Python把反斜杠当成普通字符处理:import os permission_path = r'Security\Permission' android_permission_path = permission_path + r'\android' print(os.path.exists(permission_path)) # 正常返回True print(os.path.exists(android_permission_path)) # 现在也会返回True用双反斜杠转义:把每个反斜杠写成两个,避免被解析成转义符:
import os permission_path = 'Security\\Permission' android_permission_path = permission_path + '\\android'用正斜杠代替:Python在Windows系统中也支持正斜杠作为路径分隔符,完全不用纠结转义问题:
import os permission_path = 'Security/Permission' android_permission_path = permission_path + '/android'
你可以先打印android_permission_path的内容验证一下——在Python 2.7里会输出Security\Permission\x07ndroid,一眼就能看到那个奇怪的\x07(就是\a被转义后的结果)。
内容的提问来源于stack exchange,提问作者rez
相关产品推荐
相关产品推荐

