路径拼接问题:字符串被添加至当前工作目录开头而非末尾如何解决
解决Python路径拼接时反斜杠导致的异常问题
这个问题我之前也踩过坑!本质是Python对字符串里的单个反斜杠\的解析规则在搞鬼——它是转义字符,不是字面意义上的路径分隔符,所以直接写"\aaaa\aaaa"会被Python错误解析,导致路径拼接完全跑偏。
为什么会出现这个问题?
当你写"\aaaa\aaaa"时,Python会把\a识别为转义序列(代表ASCII响铃字符),剩下的字符虽然会正常显示,但整个字符串并不是你想要的\aaaa\aaaa字面量。如果你的路径里刚好碰到像\b(退格符)这类转义符,甚至会直接删除前面的部分字符,出现你看到的“字符串被添加至路径开头”的诡异效果。
三种解决方案,按推荐程度排序:
1. 用os.path.join()自动拼接路径(最推荐)
Python的os.path模块专门处理路径问题,join()方法会自动根据操作系统适配路径分隔符(Windows用\,Linux/macOS用/),完全不用手动拼反斜杠:
import os current_dir = os.getcwd() target_path = os.path.join(current_dir, "aaaa", "aaaa") print(target_path)
输出会是你预期的:C:\Users\Rick\Desktop\technical-test\aaaa\aaaa
2. 使用原始字符串(在字符串前加r)
在字符串前面加r,表示这是原始字符串,Python不会解析里面的转义字符,反斜杠会被当成普通字符:
import os print(os.getcwd() + r"\aaaa\aaaa")
3. 用双反斜杠\\表示字面量反斜杠
把每个反斜杠换成两个,这样Python会把\\解析成一个字面量的\:
import os print(os.getcwd() + "\\aaaa\\aaaa")
内容的提问来源于stack exchange,提问作者stackoverflown




