我对编程还比较陌生,刚开始工作。我被要求提出两份申请。一种获取和存储文件信息的方法,如文件名、大小、上次修改时间和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, eofline] = fline.split('|')
print (hashy + fiMD5)
if (finame == fil3 and fiSize == filsize and fidate == filtime and fiMD5 != hashy):
print(finame + ': Wrong md5')
else:
print(finame + ': is OK')
“MD5report”文件的内容如下:
C:\pytesty\mynewfolder\egwe.bmp|a41d8cd98f00b204e9800998ecf8427e|0|Mon May 8 19:19:22 2017|
C:\pytesty\mynewfolder\ergeagheghergswa.rtf|8274425de767b30b2fff1124ab54abb5|7|Mon May 8 19:19:33 2017|
C:\pytesty\mynewfolder\tyi,kmykkymktuk.doc|b3e3d42d4a9454f8b6296f3b822f5259|9216|Mon May 8 19:19:13 2017|
C:\pytesty\pyt01\asdf.txt|e1738d5f7e720f3f3f3745b4e0d07e46|33|Mon May 8 19:00:42 2017|
C:\pytesty\pyt01\ex2.txt|7a9d20dd22c96bea3ea1fa0d01085755|69|Mon May 8 19:01:00 2017|
C:\pytesty\pyt01\exampl3.txt|5d29389c5bb758b0d9d5555825daa095|571|Mon May 8 19:01:25 2017|
当我运行程序时,我得到:
d41d8cd98f00b204e9800998ecf8427e a41d8cd98f00b204e9800998ecf8427e
C:\pytesty\mynewfolder\egwe.bmp: is OK
8274425de767b30b2fff1124ab54abb5 8274425de767b30b2fff1124ab54abb5
C:\pytesty\mynewfolder\ergeagheghergswa.rtf: is OK
b3e3d42d4a9454f8b6296f3b822f5259 b3e3d42d4a9454f8b6296f3b822f5259
C:\pytesty\mynewfolder\tyi,kmykkymktuk.doc: is OK
e1738d5f7e720f3f3f3745b4e0d07e46 e1738d5f7e720f3f3f3745b4e0d07e46
C:\pytesty\pyt01\asdf.txt: is OK
7a9d20dd22c96bea3ea1fa0d01085755 7a9d20dd22c96bea3ea1fa0d01085755
C:\pytesty\pyt01\ex2.txt: is OK
5d29389c5bb758b0d9d5555825daa095 5d29389c5bb758b0d9d5555825daa095
C:\pytesty\pyt01\exampl3.txt: is OK
>>>
如您所见,程序认为所有文件都是“正常”的,尽管它们不是,因为我故意更改了报告文件中的第一个MD5校验和
我试图寻找一些解决方案,但它们要么与这个特定场景无关,要么根本不起作用
如果能帮上点忙,我将不胜感激
根据评论编辑:
d41d8cd98f00b204e9800998ecf8427e a41d8cd98f00b204e9800998ecf8427e
C:\pytesty\mynewfolder\egwe.bmp C:\pytesty\mynewfolder\egwe.bmp
0 0
Mon May 8 19:19:22 2017 Mon May 8 19:19:22 2017
C:\pytesty\mynewfolder\egwe.bmp: is OK
8274425de767b30b2fff1124ab54abb5 8274425de767b30b2fff1124ab54abb5
C:\pytesty\mynewfolder\ergeagheghergswa.rtf C:\pytesty\mynewfolder\ergeagheghergswa.rtf
7 7
Mon May 8 19:19:33 2017 Mon May 8 19:19:33 2017
C:\pytesty\mynewfolder\ergeagheghergswa.rtf: is OK
b3e3d42d4a9454f8b6296f3b822f5259 b3e3d42d4a9454f8b6296f3b822f5259
C:\pytesty\mynewfolder\tyi,kmykkymktuk.doc C:\pytesty\mynewfolder\tyi,kmykkymktuk.doc
9216 9216
Mon May 8 19:19:13 2017 Mon May 8 19:19:13 2017
C:\pytesty\mynewfolder\tyi,kmykkymktuk.doc: is OK
e1738d5f7e720f3f3f3745b4e0d07e46 e1738d5f7e720f3f3f3745b4e0d07e46
C:\pytesty\pyt01\asdf.txt C:\pytesty\pyt01\asdf.txt
33 33
Mon May 8 19:00:42 2017 Mon May 8 19:00:42 2017
C:\pytesty\pyt01\asdf.txt: is OK
7a9d20dd22c96bea3ea1fa0d01085755 7a9d20dd22c96bea3ea1fa0d01085755
C:\pytesty\pyt01\ex2.txt C:\pytesty\pyt01\ex2.txt
69 69
Mon May 8 19:01:00 2017 Mon May 8 19:01:00 2017
C:\pytesty\pyt01\ex2.txt: is OK
5d29389c5bb758b0d9d5555825daa095 5d29389c5bb758b0d9d5555825daa095
C:\pytesty\pyt01\exampl3.txt C:\pytesty\pyt01\exampl3.txt
571 571
Mon May 8 19:01:25 2017 Mon May 8 19:01:25 2017
C:\pytesty\pyt01\exampl3.txt: is OK
如果满足所有其他条件,代码只打印哈希不匹配的内容。因此,如果由于某种原因,文件名、日期或大小不相同,if将永远不会执行表示哈希错误的代码。它将直接转到表示文件正常的行
我建议分别检查这些条件,以确保显示正确的错误消息
相关问题 更多 >
编程相关推荐