我对编程还比较陌生,刚开始工作。我被要求提出两份申请。一种获取和存储文件信息的方法,如文件名、大小、上次修改时间和MD5校验和,然后为多个文件编写一个包含该数据的文件;这个程序运行得很好
我的第二个程序(我将在下面为其发布代码)应该检查创建的文件,并将其与文件的当前条件进行比较。如果MD5 sum随其他属性一起更改,那么程序不会给出警告。但是,如果所有属性都保持不变,但是MD5发生了更改,那么程序会发出警告,因为出现了问题
我遇到的问题是如何让checker程序工作。我是一个初学者,所以如果有人能看看我的代码,看看我哪里出了差错,我会很感激的
这是我产生的代码
files = glob('C:\pytesty\*\*')
filecheck = open('MD5report.dat', 'r')
for fil3 in files:
fil3md5 = open(fil3, 'rb')
md5read = fil3md5.read()
hashy = hashlib.md5(md5read).hexdigest()
filsize = os.path.getsize(fil3)
filtime = time.ctime(os.path.getmtime(fil3))
fline = filecheck.readline()
[finame, fiMD5, fiSize, fidate] = fline.split('|')
if (finame == fil3 and fiSize == filsize and fidate == filtime and fiMD5 != hashy):
print(finame + ': match')
else:
print(finame + ': is OK')
下面是我尝试运行程序时收到的错误消息:
Traceback (most recent call last):
File "C:\a\b\c\checkfile.py", line 21, in <module>
[finame, fiMD5, fiSize, fidate] = fline.split('|')
ValueError: too many values to unpack (expected 4)
以下是MD5检查器读取并引用的其他程序输出的示例:
C:\pytesty\pyt01\ex2.txt | 7a9d20dd22c96bea3ea1fa0d01085755 | 69 | 2017年5月8日星期一19:01:00 |
您正在将字符串拆分为5个部分,如您在原始帖子上的评论所述。但是,您只提供了四个变量来存储这五个字符串。您需要添加一个额外的变量来从中捕获
fifth
字符串fline.split('|')
示例:
在
fline
(从文件MD5report.dat
读取)中有3个以上的|
分隔符,即。e。4个以上的部分,以分裂他们与你的命令如果这不是一个错误,并且您有超过4个部分(在文件
MD5report.dat
的行中),请将下划线(_
)作为跳过部分的占位符,例如。g你可以做一个简单的测试:
但是
[a, b, c, d] = "string".split("|")
意味着“将split
返回的值填充到一个变量中”。因此,在split
返回的列表中,必须有四个值,但实际上有五个,因此出现了错误相关问题 更多 >
编程相关推荐