我的代码中出现了一个无法理解的错误。os.path.join将适用于我尝试的所有路径,除了那些在"RC4"之后以t开头的路径。这里有一个例子:
>>> os.path.join('RC4staticposts', '0.png')
'RC4\static\posts\0.png'
>>> os.path.join('RC4templatesposts', '0.png')
'RC4templates\posts\0.png'
如果我拆分第一个字符串,它会起作用:
>>> os.path.join('RC4', 'templatesposts', '0.png')
'RC4\templates\posts\0.png'
t
具有TAB字符的特殊含义(类似于n
和其他"转义"字符(。这就是为什么不鼓励在路径字符串中手动使用斜线的原因。
您最好将Path
类与/
运算符一起使用
from pathlib import Path
posts_path = Path('RC4') / 'templates' / 'posts'
img_path = posts_path / '0.png'
t
是一个选项卡字符序列。使用原始字符串来避免这些问题:
os.path.join(r'RC4templatesposts', '0.png')
这是因为'\t`是一个特殊字符,表示Tab(2或4个空格(。为了避免以这种方式对其进行解释,您可以使用反斜杠对其进行转义,就像一样
os.path.join('RC4\templatesposts', '0.png')
>>> 'RC4\templates\posts\0.png'
尽管,根据xcodz-dot(评论(,在未来版本的python中,您也应该在发布之前转义斜杠,因为否则会引发错误,它也适用于python 3.8.6:
os.path.join('RC4\templates\posts', '0.png')
>> 'RC4\templates\posts\0.png'
或者,您可以在字符串前面放一个"r":
os.path.join(r'RC4templatesposts', '0.png')
>> 'RC4\templates\posts\0.png'