具有特定名称的python FTP下载文件

具有特定名称的python FTP下载文件,python,Python,我有一个带文件夹的FTP,其中包含以下文件: pw201602042000.nc, pw201602042010.nc, pw201602042020.nc, pw201602042030.nc, pw201602042040.nc, pw201602042050.nc, pw201602042100.nc, pw201602042110.nc, pw201602042120.nc, pw201602042130.nc, pw201602042140.nc, pw

我有一个带文件夹的FTP,其中包含以下文件:

pw201602042000.nc,
 pw201602042010.nc,
 pw201602042020.nc, 
 pw201602042030.nc, 
 pw201602042040.nc,
 pw201602042050.nc,
 pw201602042100.nc,
 pw201602042110.nc, 
 pw201602042120.nc, 
 pw201602042130.nc, 
 pw201602042140.nc,
 pw201602042150.nc, 
 pw201602042200.nc
如何仅下载以00结尾的文件

from ftplib import FTP

server = FTP("ip/serveradress")
server.login("user", "password")

server.retrlines("LIST") 
server.cwd("Folder")

server.sendcmd("TYPE i") # ready for file transfer
server.retrbinary("RETR %s"%("pw201602042300.nc"), open("pw", "wb").write) 

当您获得文件列表为
list\u of_files
时,只需使用
fnmatch
根据通配符匹配文件名:

list_of_files = server.retrlines("LIST")
dest_dir = "."
for name in list_of_files:
    if fnmatch.fnmatch(name,"*00.nc"):
        with open(os.path.join(dest_dir,name), "wb") as f:
            server.retrbinary("RETR {}".format(name), f.write)  

(请注意,您在同一个
“pw”
输出文件上写入文件,我更改了它,重用了原始名称并提供了一个目标目录变量,并在带有
块中保护
打开的
,以确保退出块时关闭文件)

您发布的代码有什么问题?您从服务器.retrlines(“LIST”)
中得到了什么,为什么不对它做些什么?第三次或第四次发布了此问题的变体。代码可以处理我们的错误,但目标目录仍然为空,您是否介意在调用
fnmatch
之前打印
name
?我相信我们会成功的!它说NameError:name“name”不是为文件列表中的name定义的
:如果您使用此代码段,它就是不可能的。将
list\u of\u files=server.retrline(“list”)
替换为
list\u of\u files=server.nlst()
可以解决问题。问题在于
文件列表
包含类似“传输完成…xx bps”的字符串,而不是文件列表。