在Python中,我们可以使用os和os.path模块来遍历指定目录及其子目录,并统计文件的数量和类型分布。以下是一个简单的脚本,它将帮助你完成这个任务。
import os
def count_files_by_extension(directory):
# 创建一个字典来存储文件扩展名及其数量
extension_counts = {}
# 遍历目录
for root, dirs, files in os.walk(directory):
for file in files:
# 获取文件的扩展名
extension = os.path.splitext(file)[1]
# 如果扩展名已经在字典中,增加计数
if extension in extension_counts:
extension_counts[extension] += 1
# 如果扩展名不在字典中,添加到字典并设置计数为1
else:
extension_counts[extension] = 1
return extension_counts
def main():
# 指定要统计的目录
directory_to_search = input("请输入要统计的目录路径: ")
# 检查目录是否存在
if not os.path.exists(directory_to_search):
print(f"指定的目录 {directory_to_search} 不存在。")
return
# 调用函数统计文件
extension_counts = count_files_by_extension(directory_to_search)
# 打印结果
print(f"目录 {directory_to_search} 下的文件类型分布如下:")
for extension, count in extension_counts.items():
print(f"{extension}: {count} 个")
if __name__ == "__main__":
main()
使用说明
保存脚本:将上述代码保存为一个
.py文件,例如count_files.py。运行脚本:打开命令行或终端,导航到脚本所在的目录,然后运行以下命令:
python count_files.py输入目录路径:当脚本提示你输入要统计的目录路径时,输入你想要统计的目录路径。
脚本解释
os.walk():这是一个非常强大的函数,用于遍历目录树。它返回一个三元组(dirpath, dirnames, filenames),其中dirpath是当前正在遍历的目录的路径,dirnames是该目录下所有子目录的名字列表,filenames是该目录下所有非目录文件的名字列表。os.path.splitext():这个函数用于分割文件名和扩展名。它返回一个元组,包含不包含扩展名的文件名和扩展名。extension_counts字典:我们使用这个字典来存储每种文件扩展名的数量。
当你运行这个脚本时,它会统计指定目录及其所有子目录下的文件数量和类型分布,并打印出结果。这样你就可以轻松地看到哪种类型的文件最多,哪种最少。
