无法打开 Windows 文件进行二进制读取

问题描述 投票:0回答:1

我想在 Windows 上抓取我的文件夹并计算其中文件的 md5,但发现 Python open 函数的奇怪行为,给出错误

完整代码:

import os,hashlib

def spocitej_md5(file):
    if os.path.isfile(file):
        with open(file, "rb") as f:
            digest = hashlib.file_digest(f, "md5").hexdigest()
        return digest
    else:
        return None

FolderToReadIn=r"u:\d"

for root, dirs, files in os.walk(FolderToReadIn):
    for file in files:
        filetocalculatemd5=os.path.join(root,file)
        print(filetocalculatemd5)
        print(spocitej_md5(filetocalculatemd5))
Traceback (most recent call last):
  File "P:\PythonFileListing\#020 Add MD5.py", line 17, in <module>
    print(spocitej_md5(filetocalculatemd5))
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "P:\PythonFileListing\#020 Add MD5.py", line 5, in spocitej_md5
    with open(file, "rb") as f:
         ^^^^^^^^^^^^^^^^
OSError: [Errno 22] Invalid argument: u:\d\!!!Days\Stefajir\files\Znamenka.png

要读取的文件是

"u:\d\!!!Days\Stefajir\files\Znamenka.png"

我知道 - 文件夹名称中带有感叹号可能会很奇怪,但它就是这样,Windows 中的有效路径。

所以我的问题是如何计算该文件的 MD5?

非常感谢您的帮助

V

python
1个回答
0
投票

我认为最好避免!文件夹名称中的感叹号。 你有:!!!天

© www.soinside.com 2019 - 2024. All rights reserved.