用python写一个读取某个目录下文件 ,如果里面包含文件夹,继续读取里面文件,并将文件名称、文件大小、修改时间、文件路径、sha256属性写入csv文件的脚本
时间: 2024-05-12 13:20:34 浏览: 188
以下是一个实现该功能的Python脚本:
```python
import os
import csv
import hashlib
def get_files_info(dir_path):
file_list = []
for root, dirs, files in os.walk(dir_path):
for file in files:
file_path = os.path.join(root, file)
file_size = os.path.getsize(file_path)
mod_time = os.path.getmtime(file_path)
sha256 = get_sha256(file_path)
file_list.append([file, file_size, mod_time, file_path, sha256])
return file_list
def get_sha256(file_path):
with open(file_path, 'rb') as f:
hash_obj = hashlib.sha256()
while True:
data = f.read(1024)
if not data:
break
hash_obj.update(data)
return hash_obj.hexdigest()
def write_to_csv(file_list, csv_file):
with open(csv_file, mode='w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['File Name', 'File Size', 'Modification Time', 'File Path', 'SHA-256'])
for file_info in file_list:
writer.writerow(file_info)
if __name__ == '__main__':
dir_path = '/path/to/directory'
csv_file = 'file_info.csv'
file_list = get_files_info(dir_path)
write_to_csv(file_list, csv_file)
```
该脚本首先定义了`get_files_info()`函数,该函数接受一个目录路径作为参数,并使用`os.walk()`函数遍历该目录及其子目录下的所有文件。对于每个文件,该函数获取文件名、文件大小、修改时间和文件路径,并调用`get_sha256()`函数计算文件的SHA-256属性,并将这些信息存储在一个列表中。最后,该函数返回该列表。
`get_sha256()`函数接受一个文件路径作为参数,并使用Python的`hashlib`模块计算该文件的SHA-256值。
`write_to_csv()`函数接受一个包含文件信息的列表和一个CSV文件名作为参数,并使用Python的`csv`模块将文件信息写入到CSV文件中。
在脚本的主程序中,我们指定要遍历的目录路径和要输出的CSV文件名,并调用`get_files_info()`和`write_to_csv()`函数。运行脚本后,CSV文件将包含文件名、文件大小、修改时间、文件路径和SHA-256属性的信息。
阅读全文