我需要处理名称中包含多个部分的linux文件:
abc.def.gh.bz2
bz2是真正的扩展,我需要得到abc.def.gh
有谁能告诉我在python中执行此操作的优雅方法?
非常感谢。
答案 0 :(得分:2)
使用os.path.splitext
:
import os.path
os.path.splitext("abc.def.gh.bz2") # -> ("abc.def.gh", ".bz2")
答案 1 :(得分:2)
os.path.splitext
正是你想要的。它返回一个带文件名和扩展名的元组。使用[0]
获取文件名。
>>> import os
>>> os.path.splitext('abc.def.gh.bz2')[0]
'abc.def.gh'
答案 2 :(得分:1)
.rfind()
找到最后一个点。例如"abc.def.gh.bz2".rfind(".")
会找到最后一个点的索引
该索引下面的任何点通常不会是文件类型的指示符。那么你可以做例如filename = "abc.def.gh.bz2"[:"abc.def.gh.bz2".rfind(".")]
,它应该切掉扩展名,使文件名成为abc.def.gh
的字符串
*尽管如此,请记住,在某些情况下,例如 tar.gz 或 gh.bz2 应该算作文件扩展名。请注意, what is a filename
是一个相当快速的主题
使用import os.path.splitext
并不能保证获得"文件名"。它所要做的就是从传递给它的字符串中切出。扩展名
答案 3 :(得分:1)
这个使用rsplit()
:
s = "abc.def.gh.bz2"
print(s.rsplit('.', 1)[0])
# abc.def.gh
答案 4 :(得分:-2)
您需要的只是split
功能。
a = "abc.def.gh.bz2"
print a.split(".")
所以你需要的完整解决方案是
a = "abc.def.gh.bz2"
parts = a.split(".")
result = ""
for i in range(len(parts)-1):
result += parts[i]
print result