我有什么:
import os
import ntpath
def fetch_name(filepath):
return os.path.splitext(ntpath.basename(filepath))[0]
a = u'E:\That is some string over here\news_20.03_07.30_10 .m2t'
b = u'E:\And here is some string too\Logo_TimeBuffer.m2t.mpg'
fetch_name(a)
>>u'That is some string over here\news_20.03_07.30_10 ' # wrong!
fetch_name(b)
>>u'Logo_TimeBuffer.m2t' # wrong!
我需要什么:
fetch_name(a)
>>u'news_20.03_07.30_10 '
fetch_name(b)
>>u'Logo_TimeBuffer'
答案 0 :(得分:5)
您的代码完全正常。在示例a中,\ n不被视为反斜杠字符,因为它是换行符。在示例b中,扩展名为.mpg,已正确删除。文件永远不能有多个扩展名,或包含句点的扩展名。
要仅在第一个句点之前获得该位,您可以使用ntpath.basename(filepath).split('.')[0]
,但这可能不是您想要的,因为文件名包含句点是完全合法的。