小编典典

比较本地文件和远程文件

python

我有以下问题:我有一个本地.zip文件和一个.zip位于服务器上的文件。我需要检查.zip服务器上的文件是否不同于本地文件;如果不是,我需要从服务器中拉出新的。我的问题是如何比较它们而不从服务器下载文件并在本地比较它们?

创建文件时,我可以在服务器上为zip文件创建MD5哈希.zip,然后将其与本地.zip文件的MD5进行比较,但是有没有更简单的方法?


阅读 217

收藏
2021-01-20

共1个答案

小编典典

简短的回答:不能。

长答案:要与服务器上的zip文件进行比较,必须有人读取该文件。您可以在本地执行此操作(这涉及将其拉出),也可以要求服务器为您执行此操作。您可以在服务器上运行代码吗?

编辑

如果可以在服务器上运行Python,为什么不对文件进行哈希处理并比较哈希?

import hashlib
with open( <path-to-file>, "rb" ) as theFile:
    m = hashlib.md5( )
    for line in theFile:
        m.update( line )
with open( <path-to-hashfile>, "wb" ) as theFile:
    theFile.write( m.digest( ) )

然后将的内容hashfile与本地生成的哈希进行比较?

另一个编辑

您要求一种更简单的方法。暂时以抽象的方式考虑一下:

  • 您不想下载整个zip文件。
  • 因此,您无法在本地处理整个文件(因为这将涉及从服务器读取所有文件,这相当于下载它!)。
  • 因此,您需要在服务器上进行一些处理。具体来说,您想提供一些少量的数据来对文件进行“编码”,以便无需获取整个文件就可以获取少量的数据。
  • 但这是一个哈希!

因此,您需要进行某种哈希处理。鉴于此,我认为上述内容非常简单。

2021-01-20