我正在尝试编写一个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/")
如有任何帮助,我们不胜感激!
发布于 2018-07-19 04:02:03
您可以获得所有文件名的列表,按'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
。
https://stackoverflow.com/questions/51408455
复制相似问题