我想在 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
我认为最好避免!文件夹名称中的感叹号。 你有:!!!天