【问题标题】:Downloading Files from FTP server which is updated in last n hours从最近 n 小时更新的 FTP 服务器下载文件
【发布时间】:2020-10-06 18:07:06
【问题描述】:

我的要求是下载最近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:\ 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 Permission denied。

【问题讨论】:

  • "Permission denied" 表示您无权读取该目录。
  • 嗨,当我输入 if (last_modified) == now- timedelta(hours=0, minutes=1440): 但是当我输入 ">=" 而不是 = = 然后只获得权限问题。

标签: python ftp ftplib


【解决方案1】:

此问题已修复。

根本原因:-

1>

filematch='*.csv'
ftp.cwd("/")
for file_data in ftp.mlsd(filematch):

尽管将文件类型设置为 csv,上述代码仍会获取所有内容的列表。

注意 ** LIST() 在 FTP 中不起作用

一旦列表和目录可用,它就会尝试使用 retrbinanary 写入文件,并且它只支持不支持目录的文件

ftp.retrbinary(f"RETR {file_name}", file.write)

所以只需在 if 语句中再添加一个条件,然后只选择文件。

Condition meta([type])=="file"

【讨论】:

    猜你喜欢
    • 2015-07-27
    • 2022-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 2012-07-30
    相关资源
    最近更新 更多