如何在Python中比较列表中对应于文件路径的校验和与操作系统中的文件路径?

0 投票
1 回答
934 浏览
提问于 2025-04-15 23:09

如何在Python中比较一个列表里的校验和和操作系统中的文件路径?

import os,sys,libxml2

files=[]
sha1s=[]

doc = libxml2.parseFile('files.xml')
for path in doc.xpathEval('//File/Path'):
  files.append(path.content)
for sha1 in doc.xpathEval('//File/Hash'):
  sha1s.append(sha1.content)

for entry in zip(files,sha1s):
  print entry

files.xml文件包含

<Files>
    <File>
        <Path>usr/share/doc/dialog/samples/form1</Path>
        <Type>doc</Type>
        <Size>1222</Size>
        <Uid>0</Uid>
        <Gid>0</Gid>
        <Mode>0755</Mode>
        <Hash>49744d73e8667d0e353923c0241891d46ebb9032</Hash>
    </File>
    <File>
        <Path>usr/share/doc/dialog/samples/form3</Path>
        <Type>doc</Type>
        <Size>1294</Size>
        <Uid>0</Uid>
        <Gid>0</Gid>
        <Mode>0755</Mode>
        <Hash>f30277f73e468232c59a526baf3a5ce49519b959</Hash>
    </File>
</Files>

我需要比较在标签之间的校验和,和在标签之间指定的文件路径,看看它们在操作系统中的文件路径是否一致。

1 个回答

0

当然可以!请看下面的内容:

在编程中,有时候我们需要让程序根据某些条件来做不同的事情。这就像我们在生活中做决定一样,比如今天是晴天还是雨天,我们会选择穿不同的衣服。

在代码里,我们可以使用“条件语句”来实现这个功能。条件语句就像一个开关,只有在特定的条件满足时,它才会执行某些代码。如果条件不满足,程序就会跳过这些代码,继续执行其他部分。

举个例子,如果你想检查一个数字是否大于10,你可以写一个条件语句来判断。如果这个数字大于10,程序就会打印“这个数字很大”;如果小于或等于10,程序就会打印“这个数字不大”。这样,程序就能根据不同的情况做出不同的反应。

希望这个解释能帮助你更好地理解条件语句的概念!

import hashlib
import libxml2

doc = libxml2.parseFile('files.xml')
filePaths = ["/" + path.content for path in doc.xpathEval('//File/Path')]
xmlDigests = [hash.content for hash in doc.xpathEval('//File/Hash')]

for filePath, xmlDigest in zip(filePaths, xmlDigests):
    with open(filePath) as inFile:
        digester = hashlib.sha1()
        digester.update(inFile.read())
        fileDigest = digester.hexdigest()
        if xmlDigest != fileDigest:
            print "Mismatch for %s (XML: %s, FILESYSTEM: %s)" % (filePath,
                xmlDigest, fileDigest)

撰写回答