【发布时间】:2014-06-06 11:44:03
【问题描述】:
我有什么:
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'
【问题讨论】:
-
对 Windows 文件名使用原始字符串,因为反斜杠可以转换成其他东西...;就像在 r'E:\That is some string over here\news_20.03_07.30_10 .m2t'
-
您究竟想如何区分文件扩展名和普通
.?是否要将所有以.分隔的三字符后缀视为扩展名? -
您的代码完全可以正常工作。在示例 a 中,\n 不被视为反斜杠字符,因为它是换行符。在示例 b 中,扩展名为 .mpg,已正确删除。一个文件不能有多个扩展名,或者一个包含句点的扩展名。
-
@aspect_mkn8rd,那么您已经有了解决方案。 :) 只需下载或创建您认为是官方的扩展名列表,然后从该列表中的文件名中删除任何后缀。顺便说一句,我明天会写一个程序,使用
.bla.mpg作为扩展名。 :P -
好的,我好像清楚地了解了所有情况。现在你能把这最后两个 cmets 作为答案发布吗?我想给你们两个代表你们的努力并结束这个问题。 :)
标签: python operating-system filenames filepath