import hashlib import os def calculate_md5(filename): with open(filename, 'rb') as file: md5_hash = hashlib.md5() while True: data = file.read(4096) if not data: break md5_hash.update(data) return md5_hash.hexdigest() # 替换成你想要获取文件名的目录路径 directory = "C:\\Users\\mcq\\Desktop\\1111" # 用于存储文件名的数组 file_names = [] for filename1 in os.listdir(directory): if os.path.isfile(os.path.join(directory, filename1)): file_names.append(filename1) # 示例用法 # filename1 = ["翻译.rar","翻译.zip"] for filename in file_names: md5 = calculate_md5(filename) print(f"{filename} {md5}") 优化这个脚本
时间: 2024-04-15 08:30:50 浏览: 109
你的脚本已经很不错了,不过可以进行一些优化来提高性能和代码可读性。
1. 使用列表推导式:可以使用列表推导式来简化获取文件名的过程。这样可以将 `for` 循环和条件判断合并成一行代码。
```python
file_names = [filename1 for filename1 in os.listdir(directory) if os.path.isfile(os.path.join(directory, filename1))]
```
2. 使用 `with` 语句处理文件读取:在计算 MD5 值时,可以使用 `with` 语句来打开文件,这样就不需要手动处理文件的打开和关闭。
```python
def calculate_md5(filename):
md5_hash = hashlib.md5()
with open(filename, 'rb') as file:
for data in iter(lambda: file.read(4096), b''):
md5_hash.update(data)
return md5_hash.hexdigest()
```
3. 添加异常处理:在处理文件时,可能会遇到各种异常情况。为了使脚本更健壮,可以添加适当的异常处理机制,例如处理文件不存在或无法读取的情况。
```python
def calculate_md5(filename):
md5_hash = hashlib.md5()
try:
with open(filename, 'rb') as file:
for data in iter(lambda: file.read(4096), b''):
md5_hash.update(data)
except (IOError, FileNotFoundError) as e:
print(f"Error reading file {filename}: {str(e)}")
return md5_hash.hexdigest()
```
这些优化将提高代码的可读性和性能,并增强脚本的健壮性。
阅读全文