首页 > 解决方案 > 使用 Python 知道如何在 ftp 位置更新任何文件的方法是什么?

问题描述

我正在从 ftp 位置下载一个文件,并且能够使用以下代码成功完成它-

import ftplib
server = ftplib.FTP()
server.connect('HOST', PORT)
server.login('USER_NAME','PASSWORD')
server.dir()
server.retrbinary("RETR " + 'xyz.csv' ,open('xyz.csv', 'wb').write)
server.quit()

现在我有一个要求 - 需要检查上述文件是否已更新,然后我需要运行另一个 python 脚本。

为此,我想使用最后修改日期,但在 ftplib 库中看不到任何方法。

有没有人遇到过同样的问题?如何解决?请建议怎么做?

标签: pythonpython-2.7ftppython-3.6

解决方案


您可以使用该dir方法从文件列表中获取最后修改的时间戳,并自行解析第 6 到第 8 个字段。请注意,第 8 个字段可以是一年或一天中的某个时间,在这种情况下,年份是当前年份。但是话又说回来,您根本不必解析日期/时间,因为您只需要检测更改即可。

>>> from ftplib import FTP
>>> ftp = FTP('ftp.redhat.com')
>>> ftp.login()
'230 Login successful.'
>>> ftp.dir()
lrwxrwxrwx    1 ftp      ftp             1 Dec 19  2009 pub -> .
drwxr-xr-x   45 ftp      ftp          4096 Jul 05 16:46 redhat
>>> l=[]
>>> ftp.dir(lambda x: l.append(x))
>>> l
['lrwxrwxrwx    1 ftp      ftp             1 Dec 19  2009 pub -> .', 'drwxr-xr-x   45 ftp      ftp          4096 Jul 05 16:46 redhat']
>>>

推荐阅读