[Python]比较两个zip文件的功能,一个位于FTP目录,另一个在我的本地机器上

noo*_*win 4 python ftp compare file function

我在创建比较两个 zip 文件的函数时遇到问题(如果它们相同,不仅按名称)。这是我的代码示例:

def validate_zip_files(self):
    host = '192.168.0.1'
    port = 2323
    username = '123'
    password = '123'
    ftp = FTP()
    ftp.connect(host, port)
    ftp.login(username,password)
    ftp.cwd('test')
    print ftp.pwd()
    ftp.retrbinary('RETR test', open('test.zip', 'wb').write)
    file1=open('test.zip', 'wb')
    file2=open('/home/user/file/text.zip', 'wb')
    return filecmp.cmp(file1, file2, shallow=True)
Run Code Online (Sandbox Code Playgroud)

问题之一是第二个 zip 位于不同的位置('/home/user/file/text.zip'),我正在我的 python 脚本所在的目录中下载 zip 文件。我不是 100% 确定 filecmp.cmp 可以与 .zip 文件一起使用。

任何想法都会很棒:) 谢谢。

jho*_*ken 7

我不会直接比较文件,而是继续比较文件的散列值。这消除了 的依赖性filecmp,这可能 - 正如您所说 - 不适用于压缩文件。

import hashlib

def compare_files(a,b):
    fileA = hashlib.sha256(open(a, 'rb').read()).digest()
    fileB = hashlib.sha256(open(b, 'rb').read()).digest()
    if fileA == fileB:
        return True
    else:
        return False
Run Code Online (Sandbox Code Playgroud)