In [1]: from os.path import splitext
In [2]: file_name,extension = splitext('/home/lancaster/Downloads/a.ppt')
In [3]: extension
Out[1]: '.ppt'
如果您必须细化.tar.gz,.tar.bz2的扩展,则必须编写这样的函数
from os.path import splitext
def splitext_(path):
for ext in ['.tar.gz', '.tar.bz2']:
if path.endswith(ext):
return path[:-len(ext)], path[-len(ext):]
return splitext(path)
结果
In [4]: file_name,ext = splitext_('/home/lancaster/Downloads/a.tar.gz')
In [5]: ext
Out[2]: '.tar.gz'
编辑
通常您可以使用此函数
from os.path import splitext
def splitext_(path):
if len(path.split('.')) > 2:
return path.split('.')[0],'.'.join(path.split('.')[-2:])
return splitext(path)
它将适用于所有扩展。
处理所有文件。
In [6]: inputs = ['a.tar.gz', 'b.tar.lzma', 'a.tar.lz', 'a.tar.lzo', 'a.tar.xz','a.png']
In [7]: for file_ in inputs:
file_name,extension = splitext_(file_)
print extension
....:
tar.gz
tar.lzma
tar.lz
tar.lzo
tar.xz
.png
Python3.4
现在可以使用pathlib中的^{} 。它有许多特性,其中之一是^{} :
如果要获取多个后缀,请使用
suffixes
:这里是} 的更多信息。
os
中的内置模块。关于^{如果您必须细化
.tar.gz
,.tar.bz2
的扩展,则必须编写这样的函数结果
编辑
通常您可以使用此函数
它将适用于所有扩展。
处理所有文件。
文件扩展名的作用是告诉查看器(有时是计算机)要使用哪个应用程序来处理文件。
以您的评论(
a.ppt.tar.gz
)中最坏的情况为例,这是一个经过tar-balled和gzip压缩的PowerPoint文件。所以您需要使用gzip处理程序来打开它。使用PowerPoint或tarball处理程序是行不通的。好吧,一个知道如何处理.tar
和.gz
文件的聪明程序可以理解这两个操作并使用.tar.gz
文件,但是请注意,即使扩展名只是.gz
,它也可以做到这一点。事实上,
tar
和gzip
都将它们的扩展名添加到原始文件名中,而不是替换它们(正如zip
所做的那样),这是一种方便。但是gzip文件的基名仍然是a.ppt.tar
。相关问题 更多 >
编程相关推荐