我还没找到任何论坛解释过如何从FTP下载某些文件(使用python 2.7)
我已经用它来下载某个目录中的所有文件:
import ftplib
import os
import csv
# Download files from FTP Directory
os.chdir(r'_____') #write to...
ftp = ftplib.FTP('ftp.____.___','anonymous','_____')
ftp.cwd('/____')
filematch = '*.laz' # works to get all .laz files in a block
for filename in ftp.nlst(filematch):
fhandle = open(filename, 'wb')
print 'Getting ' + filename #Displays which file is being downloaded
ftp.retrbinary('RETR '+ filename, fhandle.write)
fhandle.close()
ftp.quit() # This is the “polite” way to close a connection
但是有数千个文件,可能需要几个小时。我只需要我列出的某些文件。
有没有办法使用filematch部分遍历此列表?所以它匹配该文件,在本地写入,然后移动到列表中的下一个文件?
我试过了:
with open(r'C:/____.csv','rb') as f:
reader = csv.reader(f)
headers = reader.next()
for fields in reader:
your_list = list(reader)
lazfiles = [_[1] for _ in your_list]
os.chdir(r'____') #write to...
ftp = ftplib.FTP('ftp.____','anonymous','____')
ftp.cwd('/____')
for filename in lazfiles:
fhandle = open(filename, 'wb')
print 'Getting ' + filename #Displays which file is being downloaded
ftp.retrbinary('RETR '+ filename, fhandle.write)
fhandle.close()
ftp.quit()
但是我收到一条错误说#34; 550无法打开文件"。它将一个文件写入目录,但大小为0 ......
我想这必须与文件类型和列表以及诸如此类的东西有关。但是我还不熟悉各种python脚本如何处理不同类型的列表。