添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
豁达的红烧肉  ·  python - Scikit Image ...·  1 年前    · 
谈吐大方的拐杖  ·  使用Apache Hudi + ...·  2 年前    · 
茫然的风衣  ·  WPF ...·  2 年前    · 

获取一个目录中的文件信息并打印在一个表格中

2 人关注

我被卡住了。我想在用户指定的Windows目录下,将该目录下的每个文件都列在一个表格中,包括路径、文件名、文件大小、最后修改时间和MD5哈希值。我不知道如何把它分解成单个文件;它只做整个路径。我知道路径变量需要变成目录中的各个文件,但我不知道如何做到这一点。

我怎样才能创建相应的表,并添加MD5哈希列。最后修改时间应该是人类可读的格式,而不是UNIX的时间戳。

#import libraries
import os
import time
import datetime
import logging
import hashlib
from prettytable import PrettyTable
import glob
#user input
path = input ("Please enter directory: ")
verbose = input ("Please enter yes/no for verbose: ")
print ("===============================================")
#processing input
if os.path.exists(path):
    print("Processing directory: ", (path))
else:
    print("Invalid directory.")
    exit()
if (verbose) == ("yes"):
    print("Verbose selected")
elif (verbose) == ("no"):
    print("Verbose not selected")
else:
    print("Invalid input")
print ("===============================================")
#process directory
directory = glob.glob(path)
filename = os.path.basename(path)
size = os.path.getsize(path)
modified = os.path.getmtime(path)
#output in to table
report = PrettyTable()
column_names = ['Path', 'File Name', 'File Size', 'Last Modified Time', 'MD5 Hash']
report.add_column(column_names[0], [directory])
report.add_column(column_names[1], [filename])
report.add_column(column_names[2], [size])   
report.add_column(column_names[3], [modified])
report.sortby = 'File Size'
print (report)
    
python
file
path
hashlib
prettytable
Matt R
Matt R
发布于 2019-12-05
1 个回答
CDJB
CDJB
发布于 2019-12-05
已采纳
0 人赞同

这个解决方案是否符合你的要求?使用内置的 路径 :

from pathlib import Path
from datetime import datetime
import hashlib
#...Your code getting path here...
directory = Path(path)
paths = []
filename = []
size = []
hashes = []
modified = []
files = list(directory.glob('**/*.*'))
for file in files:
    paths.append(file.parents[0])
    filename.append(file.parts[-1])
    size.append(file.stat().st_size)
    modified.append(datetime.fromtimestamp(file.stat().st_mtime))
    with open(file) as f:        
        hashes.append(hashlib.md5(f.read().encode()).hexdigest())
#output in to table
report = PrettyTable()
column_names = ['Path', 'File Name', 'File Size', 'Last Modified Time', 'MD5 Hash']
report.add_column(column_names[0], paths)
report.add_column(column_names[1], filename)
report.add_column(column_names[2], size)   
report.add_column(column_names[3], modified)
report.add_column(column_names[4], hashes)
report.sortby = 'File Size'
print(report)

Output:

+-------------------+------------------+-----------+----------------------------+----------------------------------+
|        Path       |    File Name     | File Size |     Last Modified Time     |             MD5 Hash             |
+-------------------+------------------+-----------+----------------------------+----------------------------------+
| C:\...\New folder | 1 - Copy (2).txt |     0     | 2019-12-05 15:35:31.562420 | d41d8cd98f00b204e9800998ecf8427e |