在Windows中,os.path.basename('D:\\abc\def.txt')
返回abc\def.txt
,而os.path.basename('/abc/def.txt')
返回def.txt
。os.path.basename是否適用於文件系統文件?
不應該第一次還要返回def.txt
?
在Windows中,os.path.basename('D:\\abc\def.txt')
返回abc\def.txt
,而os.path.basename('/abc/def.txt')
返回def.txt
。os.path.basename是否適用於文件系統文件?
不應該第一次還要返回def.txt
?
您的文件名中有轉義碼,而不是\
目錄分隔符。你一定是通過使用def
的文件名簡化你的問題,但還你實際上與簡單的文件名測試你已經注意到了斜槓將增加一倍:
>>> 'D:\\abc\def.txt'
'D:\\abc\\def.txt'
注意,\d
字符串文字中在值的Python表示中成爲\\
轉義反斜槓。這是因爲沒有有效的\d
轉義序列。在Windows系統中os.path.basename()
調用將按預期該路徑:
>>> import os.path
>>> os.path.basename('D:\\abc\\def.txt')
'def.txt'
在你的情況,但是,您創建了一個轉義序列,無論是\n
,\r
或\t
,因爲你要麼忘了反斜槓或你加倍忘了使用原始字符串。你做不是在文件名的那部分有一個\
字符,所以在那個位置沒有任何東西可以分割。
使用r'...'
原始字符串,以防止單反斜線形成轉義序列,或在所有地點雙倍的反斜槓,或使用向前斜槓(視窗可以接受)。
謝謝。這是我的測試中的一個錯字。應該是「D:\\ abc \\ def.txt」。 –
確切地說,你沒有逃過反斜槓,這是我說的那個帽子。 –
當'\ d'是一個轉義序列時不行。我想你簡化了你的問題; 'def'真的是以'd'還是以'r','t'或'n'開始? –