如何遍历列表以从FTP下载某些文件

时间:2015-10-09 16:05:42

标签: python loops ftp

我还没找到任何论坛解释过如何从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脚本如何处理不同类型的列表。

0 个答案:

没有答案