如何让python列出目录中的所有文件扩展名?

时间:2017-07-22 15:31:58

标签: python-3.x

我试过这个:

ListFiles = list(os.walk(os.getcwd()))
SplitTypes = []

for i in range ( 0 , len(ListFiles) ):
SplitTypes.extend(ListFiles[i].rsplit( "." ) [1])

print(SplitTypes)

但我得到的结果是:

['p', 'y', 't', 'x', 't', '3', '2', ' ', 'p', 'm', '4', '0', '1', '2', '2', '4', '1', '4', 's', 'k', 'p', 'm', 'p', '4']

这些数字是因为我在该目录中的屏幕截图,时间由'分隔。'它们是分开的。

我想要显示结果:

['py', 'txt', 'skp', 'png']

或类似的东西。

以及此文件名' Screen Shot 2017-05-24 at 11.24.33 am.png'应该只显示png位。 在此之后,我将使用set()删除重复项。

2 个答案:

答案 0 :(得分:1)

这可以通过以下方式完成:

import os

ListFiles = os.walk(os.getcwd())
SplitTypes = []
for walk_output in ListFiles:
    for file_name in walk_output[-1]:
        SplitTypes.append(file_name.split(".")[-1])

print(SplitTypes)

os.walk将输出作为3个元素元组,其中最后一个元素是文件名列表。因此,我们需要遍历os.walk的输出,它将为当前目录中的文件提供元组,并为每个子目录中的文件提供额外的元组。然后我们需要获取每个元组的最后元素,这将给出文件名列表。然后,我们将使用split遍历文件名.并提取扩展名,该扩展名将是使用split生成的列表的最后一个元素。我们可以通过下标-1来提取Python中任何序列的最后一个元素。最后,我们将提取的扩展名附加到SplitTypes

如果您的文件夹中没有其他文件夹,则可以通过以下方式轻松解决您的问题:

import os

SplitTypes=[]
for file in os.listdir(os.curdir):
    SplitTypes.append(file.split('.')[-1])
print(SplitTypes)

os.listdir(path)仅提供路径目录中的文件名。

答案 1 :(得分:0)

pathlib中的路径便于获取扩展名 在Python 3.4及更高版本中

导入操作系统

从pathlib导入路径

def find_extensions(dir_path,  excluded = ['', '.txt', '.lnk']):
    import os
    from pathlib import Path    
    extensions = set()
    for _, _, files in os.walk(dir_path):   
        for f in files:
            ext = Path(f).suffix.lower()
            if not ext in excluded:
                extensions.add(ext)
    return extensions 
相关问题