python - 使用 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 库中看不到任何方法。
有没有人遇到过同样的问题?如何解决?请建议怎么做?
解决方案
您可以使用该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']
>>>
推荐阅读
- ruby - 使用 chef 计算 sha-256
- firebase - `react-redux-firebase` 解决了什么问题?
- php - 如何在不将所有内容包装到 try/catch 中的情况下处理数据验证
- java - 使用 JavaFX 将图像拖到窗口外
- vue.js - 使用 Vue.js 添加自动广告
- javascript - 使用对象解构(首选解构)
- reactjs - SectionList 为字符串的每个字符创建一个单独的 renderItem
- sql - SQL Server - 索引选项
- visual-studio-code - 在哪里可以找到适用于 Visual Studio Code 中 C#/.NET 核心的 textMateRules 的官方完整范围列表?
- react-native - 使用功能组件从 navigationOpstions 访问导航道具