这里的问题是您使用\作为路径名分隔符,但是\在Python字符串中也用作转义字符。特别是\b
表示“退格”(或'\x08'
)。您可以避免其他反斜杠,因为没有相当多文献记载但可靠的行为,例如未知的转义序列\X
被视为反斜杠,后跟一个X
。
有三种解决方案:
如果您已经记住了Python转义序列的列表,并且愿意依赖可能会更改但可能不会更改的功能,则可以仅对\b
此处进行转义,而可以逃脱,但是应该清楚为什么其他三个是更好的主意长期来说。
尽管Windows路径名本机确实使用反斜杠分隔符,但所有内置的和标准库的Python函数以及第三方库中的大多数函数都非常乐意让您使用正斜杠来代替。(这是可行的,因为Windows根本不允许路径中的正斜杠。)
要了解其工作方式和原因,您可能需要尝试打印出字符串:
>>> print "C:\Users\dylan\Desktop\Practice Game\brick.jpg"
C:\Users\dylan\Desktop\Practice Gamrick.jpg
>>> print r"C:\Users\dylan\Desktop\Practice Game\brick.jpg"
C:\Users\dylan\Desktop\Practice Game\brick.jpg
>>> print "C:\\Users\\dylan\\Desktop\\Practice Game\\brick.jpg"
C:\Users\dylan\Desktop\Practice Game\brick.jpg
>>> print "C:/Users/dylan/Desktop/Practice Game/brick.jpg"
C:/Users/dylan/Desktop/Practice Game/brick.jpg