尊敬的论坛用户!需要您的帮助!
我想处理文件存储,删除重复文件。编写了一个遍历目录树的程序。我卡在了哈希计算阶段,事实是文件名不仅包含字母字符和数字,还包含空格和特殊字符。起初,Python 在第一个有问题的文件处停止,后来我添加了 try / except,现在它到了最后,跳过了有问题的文件,但我对此并不满意!
语言:Python 3
#! /usr/bin/env python3
import subprocess
try:
hash = subprocess.check_output('md5sum -- "{}"'.format(file), universal_newlines=True, shell=True)[:32]
except Exception:
print('Проблемный файл {}'.format(file))
对于hashlib,它还不能工作,它会产生很多问题,所以现在我不得不使用标准的md5sum实用程序。你能同时告诉我如何使用hashlib解决问题吗?
您通过控制台使用第三方程序,您应该使用通过操作系统 API工作的完整库(在本例中为标准库),因此不会遇到难以处理的特殊字符问题控制台(这是众所周知的控制台致命弱点)。
要计算 MD5,有hashlib.md5()。您可以像这样计算文件的哈希值(来自答案):