【问题标题】:Python ftplib: Best way to check if a file has changed?Python ftplib:检查文件是否已更改的最佳方法?
【发布时间】:2012-04-21 18:31:59
【问题描述】:

我希望安排 FTP 文件传输,但为了节省带宽,我只想上传已更改的文件。有什么可靠的方法可以在各种不同的托管服务提供商上运行?

【问题讨论】:

    标签: python ftp ftplib


    【解决方案1】:

    首先,检查本地文件是否已更改实际上与 FTP 无关。你是说你只会在文件发生变化时打开一个 FTP 连接来上传文件。

    概括地说,您需要采用的基本策略是跟踪您的应用程序上次检查更改的时间(之前的执行时间戳),并将其与您感兴趣的文件的时间戳进行比较上传。如果文件上的时间戳较新,则它们很可能已更改。我说最有可能是因为可以只更新时间戳(例如,touch 在 unix/linux 上)。

    下面是一个快速示例,向您展示如何检查特定目录中所有项目的修改时间:

    import os, time
    
    checkdir="./"
    
    for item in os.listdir(checkdir):
        item_path = "%s%s"%(checkdir,item)
        mtime = os.path.getmtime(item_path)
        print "%s: %s" %(item_path,mtime)
    

    请注意,这不区分文件类型(例如常规文件、目录、符号链接)。阅读docs on os.path 了解如何确定文件类型,以便您可以跳过某些类型,如果您愿意的话。

    您仍然需要提出逻辑来存储上一次“扫描”的时间,以便在后续扫描中引用它。一个非常简单的方法是在文件中存储一个值。

    确保在两次“扫描”重叠时使用锁定策略。 FTP 上传需要一些时间才能完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-13
      • 2010-11-08
      • 2013-05-27
      • 1970-01-01
      • 1970-01-01
      • 2016-11-01
      • 1970-01-01
      相关资源
      最近更新 更多