-
20181205Python 自动化笔试题,挑战你的知识库
2020-07-24 10:55import os import hashlib def filename_distinct(file_path): #获取目录下的所有文件并去重 files=[] for root, dirs, file in os.walk(file_path): '''file为循环遍历的每一个目录下的文件,存储为列表形式''' files+=file #每个文件夹下的文件名列表相加,获取所有文件 #对所有文件名去重并重命名重复的文件名,循环遍历,两两对比 for i in range(len(files)-1): for j in range(i,len(files)-1): if files[i]==files[j+1]: #如果文件名重复 '''为重复的文件名中的一个重命名,加上循环遍历的i,j保证重命名后文件名不会再重复''' files[i]=str(i)+str(j)+files[i] # print('所有文件名——去重后:',files) return files def file_md5(file_path): #获取文件的md5属性 if os.path.isfile(file_path): fp = open(file_path, 'rb') contents = fp.read() fp.close() md5_1 = hashlib.md5(contents).hexdigest() else: print('file not exists') return md5_1 def get_big_file(file_path,size): #获取大于指定size的文件,单位为M big_file=[] for fpathe,dirs,fs in os.walk(file_path): #遍历目录下的所有文件 for f in fs: file_path=os.path.join(fpathe,f) #文件的绝对路径 if os.path.getsize(file_path)>1024*1024*size: big_file.append(file_path) #获取到大于10M的文件绝对路径列表 return big_file if __name__ == '__main__': file_path='C:\\Users\\liang\\Desktop\\新建文件夹' bigfile=get_big_file(file_path,10) print(filename_distinct(file_path)) print(bigfile) md5file=[] for file_name in bigfile: md5file.append(file_md5(file_name)) print(md5file) ```python -
20181205Python 自动化笔试题,挑战你的知识库
2020-07-24 10:55mport os
import hashlibdef filename_distinct(file_path):
#获取目录下的所有文件并去重
files=[]
for root, dirs, file in os.walk(file_path):
'''file为循环遍历的每一个目录下的文件,存储为列表形式'''
files+=file #每个文件夹下的文件名列表相加,获取所有文件
#对所有文件名去重并重命名重复的文件名,循环遍历,两两对比
for i in range(len(files)-1):
for j in range(i,len(files)-1):
if files[i]==files[j+1]: #如果文件名重复
'''为重复的文件名中的一个重命名,加上循环遍历的i,j保证重命名后文件名不会再重复'''
files[i]=str(i)+str(j)+files[i]
# print('所有文件名——去重后:',files)
return filesdef file_md5(file_path):
#获取文件的md5属性
if os.path.isfile(file_path):
fp = open(file_path, 'rb')
contents = fp.read()
fp.close()
md5_1 = hashlib.md5(contents).hexdigest()
else:
print('file not exists')
return md5_1def get_big_file(file_path,size):
#获取大于指定size的文件,单位为M
big_file=[]
for fpathe,dirs,fs in os.walk(file_path): #遍历目录下的所有文件
for f in fs:
file_path=os.path.join(fpathe,f) #文件的绝对路径
if os.path.getsize(file_path)>10241024size:
big_file.append(file_path) #获取到大于10M的文件绝对路径列表
return big_fileif name == 'main':
file_path='C:\Users\liang\Desktop\新建文件夹'
bigfile=get_big_file(file_path,10)
print(filename_distinct(file_path))
print(bigfile)
md5file=[]
for file_name in bigfile:
md5file.append(file_md5(file_name))
print(md5file)