如何获取目录及其所有子目录中所有文件的扩展名?
获取目录及子目录所有文件的扩展名
你可以利用Python的os.path.splitext()方法提取文件扩展名,这个方法会将文件名拆分为"主文件名"和"扩展名"两部分,返回一个元组,其中第二个元素就是带点号的扩展名(比如.txt、.py),无扩展名的文件会返回空字符串。
修改你的代码,专注处理文件部分即可(目录不需要提取扩展名),示例代码如下:
import os path = os.getcwd() # 遍历目录及子目录 for dirpath, _, filenames in os.walk(path): for file in filenames: file_path = os.path.join(dirpath, file) # 提取扩展名 file_ext = os.path.splitext(file)[1] # 打印文件路径和对应的扩展名 print(f"{file_path} : {file_ext}")
如果需要去重并统计每种扩展名的数量,可以用字典来统计:
import os path = os.getcwd() ext_count = {} for dirpath, _, filenames in os.walk(path): for file in filenames: file_ext = os.path.splitext(file)[1].lower() # 转小写避免区分.TXT和.txt ext_count[file_ext] = ext_count.get(file_ext, 0) + 1 # 打印统计结果 print("文件扩展名统计:") for ext, count in ext_count.items(): print(f"{ext}: {count} 个")
说明
os.path.splitext(file)[1]:直接获取扩展名,注意保留了点号,如果你需要去掉点号,可以用os.path.splitext(file)[1].lstrip('.')- 第二个示例中用
lower()统一转为小写,避免大小写不同的同种扩展名被分开统计(比如.PDF和.pdf)
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

