第一部分,解析文件夹的部分,将所有的文件夹和文件解析出来:代码如下:
# 执行分析文件夹的部分
allFileNum = 0
# 文件夹对象(字典)
dir_dict = defaultdict(list)
def print_path(level, path, father, f_id, version, db_session):
global dir_dict
'''''
打印一个目录下的所有文件夹和文件
'''
dir_list = []
file_list = []
# 对文件进行排序
files = os.listdir(path)
files.sort()
dir_list.append(str(level))
for f in files:
if os.path.isdir(path + '/' + f):
# 排除隐藏文件夹和无用文件
if f[0] == '.' or f[0].startswith('__'):
pass
else:
dir_list.append(f)
if os.path.isfile(path + '/' + f) and f.endswith('.md') and 'README' not in f:
file_path = path + '/' + f
with open(path + '/' + f, 'rb') as j:
# 计算大小,和获取唯一值(判断文件是否有改动的情况),md5值变化即文件改动
content = j.read()
size = len(content)
md5_value = md5_file_content(content)
# 创建文件,包括文件名,文件路径,文件大小,文件版本,文件唯一值
id_ = File.create_file(f, str(file_path), size/1024, version, md5_value, db_session=db_session)
file_list.append((path + '/' + f, f, id_))
# 解析单个文件函数
run(path + '/' + f, f, version, id_)
# 解析文件夹
i_dl = 0
for dl in dir_list:
# 文件夹的层级加1
if i_dl == 0:
i_dl = i_dl + 1
else:
# 将文件夹的层级,地址,名称,父级文件夹,父级文件夹id存进数据库
res = Directory.create_dir(dl, int(dir_list[0]), path, father, f_id, version, db_session&#