写在前面:
功能说明:给了两个文件夹,需要对比出两个文件夹的文件不同之处,包括前一个文件夹比后一个文件夹减少了哪些文件或子文件夹,亦或是后一个比前一个多了多少。
思路:
根据当下的要求,只是简单对比两个文件夹的文件名的异同。
说明扩展:
1、由于当前的程序只是对比了文件名相同与否,并不能保证后一个文件夹中的文件是否只是文件名相同,但是文件内容已经进行了修改。如果需要对比确保文件是否修改,可以在获取当前文件夹下文件的函数get_files里面,添加记录文件的最后修改时间,与文件名进行拼接组合成key,这样在后续两文件夹对比时也可以分离出修改时间。
2、同样地,该程序同样没有对比文件扩展名,如果需要对比不同的文件格式,方法同上,也是保留拓展名放置于key中。
import os
import shutil
import time
from collections import defaultdict
def make_dir(file_path, file_name = None):
"""
创建文件夹
:param file_path:
:return:
"""
if file_name is not None:
file_path = os.path.join(file_path, file_name)
try:
os.mkdir(file_path)
except FileExistsError:
print('文件夹已存在')
def get_files(file_path):
"""
获取当前绝对路径下的所有文件名
:param file_path: 文件夹绝对路径
:return: 记录文件的路径字典,记录文件夹的路径字典
"""
file_list = os.listdir(file_path)
# 当前文件夹下所有文件和文件夹的列表,key为文件名(不含拓展名),value为该文件的绝对路径
file_dict = defaultdict(str)
dir_dict = defaultdict(str)
for file in file_list:
# print(file)
file_item = os.path.join(file_path, file)
if os.path.isfile(file_ite