Python中验证当前目录是否为目标路径及解决路径转义问题
解决Python路径匹配与反斜杠编码问题
问题根源
- Windows系统下
os.getcwd()返回的路径使用反斜杠(),而自定义路径用了正斜杠(/),直接字符串比较会因格式差异不相等。 - 直接写反斜杠路径时,Python会将
\U、\D等识别为unicode转义字符,触发解码错误。
解决方法
1. 正确书写Windows反斜杠路径
两种方式可避免unicode编码错误:
- 使用原始字符串:在路径字符串前加
r,让Python忽略转义字符myDir = r"C:\Users\Dell\Desktop\Python" - 使用双反斜杠:用
\\代替单个\,转义后表示实际的反斜杠myDir = "C:\\Users\\Dell\\Desktop\\Python"
2. 统一路径格式后再比较
通过os.path.normpath()函数统一路径格式,消除格式差异后再做字符串比较:
import os pwd = os.getcwd() myDir = "C:/Users/Dell/Desktop/Python" # 统一路径格式 normalized_pwd = os.path.normpath(pwd) normalized_myDir = os.path.normpath(myDir) if normalized_pwd == normalized_myDir: xyz_path = "xyz" if not os.path.isdir(xyz_path): os.makedirs(xyz_path) if os.path.isdir(xyz_path): print("directory xyz is created")
3. 更可靠的目录匹配:os.path.samefile()
直接判断两个路径是否指向同一个实际目录,不受字符串格式影响:
import os pwd = os.getcwd() myDir = "C:/Users/Dell/Desktop/Python" try: if os.path.samefile(pwd, myDir): xyz_path = "xyz" if not os.path.isdir(xyz_path): os.makedirs(xyz_path) print("directory xyz is created") except FileNotFoundError: print("目标目录不存在")
内容的提问来源于stack exchange,提问作者Sreekar yadiki
相关产品推荐
相关产品推荐

