python - 从最近 n 小时更新的 FTP 服务器下载文件
问题描述
我的要求是下载过去 24 小时内到达根目录的文件。
下面的代码在子目录中工作(假设 ftp.cwd("/Landing/") 但在我更改到根目录时触发错误。
filematch='*.csv'
ftp.cwd("/")
for file_data in ftp.mlsd(filematch):
file_name,meta = file_data
last_modified = datetime.strptime(meta.get("modify"), "%Y%m%d%H%M%S")
if (last_modified) >= now- timedelta(hours=0, minutes=1440):
print(last_modified)
local_filename = os.path.join('C:\\Work\\', file_name)
file = open(local_filename, 'wb')
with open(local_filename, "wb") as file:
ftp.retrbinary(f"RETR {file_name}", file.write)
如果我将其更改为>=
,==
则它在根目录中工作(但两种情况在子目录中都很好;问题仅在根目录中)
if (last_modified) = now- timedelta(hours=0, minutes=1440):
错误信息:-
文件“C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\lib\ftplib.py”,第 425 行,以 self.transfercmd(cmd,rest) 作为 conn 的 retrbinary:文件“C:\ Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\lib\ftplib.py”,第 382 行,在 transfercmd 返回 self.ntransfercmd(cmd, rest)[0] 文件“C:\Program Files\WindowsApps\ PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\lib\ftplib.py”,第 348 行,在 ntransfercmd resp = self.sendcmd(cmd) 文件“C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776. 0_x64__qbz5n2kfra8p0\lib\ftplib.py”,第 275 行,在 sendcmd 返回 self.getresp() 文件“C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776。0_x64__qbz5n2kfra8p0\lib\ftplib.py",第 248 行,在 getresp 中引发 error_perm(resp)ftplib.error_perm:550 权限被拒绝。
解决方案
这个问题已被解决。
根本原因:-
1>
filematch='*.csv'
ftp.cwd("/")
for file_data in ftp.mlsd(filematch):
尽管将文件类型设置为 csv,但上面的代码将获取所有内容的列表。
注意 ** LIST() 在 FTP 中不起作用
一旦列表和目录可用,它将尝试使用 retrbinanary 写入文件,它将仅支持文件而不是 dir
ftp.retrbinary(f"RETR {file_name}", file.write)
所以只需在 if 语句中再添加一个条件并仅选择文件。
Condition meta([type])=="file"
推荐阅读
- c - C中损坏的文件
- mongodb - 是否有用于基于字段过滤所有嵌套/子文档的 Mongo 函数?
- javascript - 当 PayPal Plus iframe 在反应应用程序的页面中呈现时,浏览器后退操作在 Firefox 中不起作用
- python - 类型错误。on_message() 缺少 1 个必需的位置参数:'ctx'
- java - java - 如何在Java中不做任何修改地打印原始请求正文JSON?
- javascript - d3 on.click 函数参数,版本 5 vs 6
- reactjs - 如何通过回调提出请求?
- delphi - 将文本绘制为路径。Bahnschrift 字体的问题
- javascript - JSON响应数据类型不统一
- wordpress - WooCommerce JS 事件在使用 Vanilla JS 时不起作用,但适用于 jQuery