作为更广泛的项目(要学习)的一部分,我正在构建一个脚本来发现以递归方式发现文件夹中的文件。然后将文件名(包括路径)和大小(以字节为单位)添加到CSV文件中。
然后我将该CSV文件加载为python字典。
我现在想做的是让python解析字典中的每个值(即大小),并将其与字典中的所有其他值进行比较。如果找到匹配项,我希望它向我显示哪些键(文件名)具有匹配值。然后,我将对那些大小相同的对象进行MD5哈希处理。
以下代码据我所知-任何人都可以提供帮助吗?
#!/usr/bin/env python3
import argparse
import os
import sys
import csv
import fnmatch
def verify_args():
parser = argparse.ArgumentParser(description='Compare files recursively.')
parser.add_argument('path', help='Location to begin file comparison from.')
check = parser.parse_args()
if os.path.isdir(check.path):
print(check.path,'is a valid path - continuing' + '\n')
else:
print(check.path,'is an invalid path - exiting' + '\n')
sys.exit()
return parser.parse_args()
def listfiles(file_path):
print ('Starting comparison')
pattern = '*'
with open('/tmp/foo','w') as fo:
fo.write('file,size' + '\n')
for root, dirs, files in os.walk(file_path):
for filename in fnmatch.filter(files, pattern):
fo.write(os.path.join(root, filename) + ',' + str(os.path.getsize(os.path.join(root, filename))) + '\n')
files = {}
with open('/tmp/foo') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
files[row['file']] = row['size']
x = files.keys()
print(x)
# Not sure now what to do
def main():
args = verify_args()
file_path = args.path
listfiles(file_path)
if __name__ == '__main__':
main()