首页 > 解决方案 > 同一目录中所有罚款的 MD5 散列 - 错误没有这样的文件或目录

问题描述

我想为目录中的每个文件生成 md5 但实际上我总是遇到同样的问题:

Traceback (most recent call last):
  File "generate_md5.py", line 43, in <module>
    generate_dir(argument_path)
  File "generate_md5.py", line 29, in generate_dir
    with open(file, "rb") as f:
FileNotFoundError: [Errno 2] No such file or directory: 'test.xsd'

我不明白问题出在哪里?

parser = ArgumentParser()
parser.add_argument('-idir', '--input_dir', help='directory', dest='path_dir_in')
argument_path = parser.parse_args()

    def generate_dir(argument_path):
        hash_md5 = hashlib.md5()

        for file in os.listdir(argument_path.path_dir_in):
            with open(file, "rb") as f:
                for chunk in iter(lambda: f.read(4096), b""):
                    hash_md5.update(chunk)
            print("Name :" + file)
            print(hash_md5.hexdigest())
            file_md5 = GenerateTxt()
            file_md5.write_file_txt([hash_md5.hexdigest()], file)

标签: pythonmd5file-not-found

解决方案


用于os.list.dir显示所有文件,然后os.path.join打开目录中的所有文件:

def generate_dir(argument_path):
    hash_md5 = hashlib.md5()

    for filename in os.listdir(argument_path.path_dir_in):
        with open(os.path.join(argument_path.path_dir_in, filename), "rb") as f:
            for chunk in iter(lambda: f.read(4096), b""):
                hash_md5.update(chunk)
        print("Name :" + filename)
        print(hash_md5.hexdigest())
        file_md5 = GenerateTxt()
        file_md5.write_file_txt([hash_md5.hexdigest()], filename)

推荐阅读