比较字典值

时间:2019-08-01 15:32:05

标签: python dictionary

作为更广泛的项目(要学习)的一部分,我正在构建一个脚本来发现以递归方式发现文件夹中的文件。然后将文件名(包括路径)和大小(以字节为单位)添加到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()

0 个答案:

没有答案