Python从FTP下载文件,文件名以特定字符开头

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (611)

我正在尝试编写一个python脚本,该脚本将登录到FTP服务器并仅下载文件名以某些字符开头的目录中的文件。我连接的FTP目录包含所有文件名都不同的文件,所有文件都以日期/时间戳结束,而不是像“.txt”这样的文件扩展名。例如:

-rw-------   1 USERNAME USERNAME      1230456 Jul 18 11:02 NOTMYFILE.FILE.201807181102
-rw-------   1 USERNAME USERNAME      1230457 Jul 18 12:02 FILEINEED.FILE.201807181202
-rw-------   1 USERNAME USERNAME      1230458 Jul 18 10:02 FILEINEED.FILE.201807181002
-rw-------   1 USERNAME USERNAME      1230458 Jul 18 09:02 NOTMYFILE.FILE.201807181902

我需要告诉python只下载以“FILEINEED”开头的文件。

我搜索过但无法找到一种方法来下载文件名,文件名以'FILEINEED'开头,让它忽略以'NOTMYFILE'开头的文件

以下是我目前在脚本中的内容:

from ftplib import FTP

ftp = FTP("ftp.server.url")
ftp.login(user="UserName", passwd="password123")
ftp.retrlines("LIST")

ftp.cwd("/outbox/")
提问于
用户回答回答于

您可以获取所有文件名的列表,过滤该列表'FILEINEED' in filename,然后在这些文件上使用FTP.retrbinary

filesineed = [filename for filename in ftp.nlst() if 'FILEINEED' in filename]

# Iterate through all the filenames and retrieve them one at a time
for filename in filesineed:
    local_filename = os.path.join(os.getcwd(), filename)
    with open(local_filename, 'wb') as f:
        print('downloading {}...'.format(filename))
        ftp.retrbinary('RETR %s' % filename, f.write)

将这些文件保存到本地当前工作目录。local_filename如果要保存在其他位置,请更改。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励