从ftp服务器下载文件到目录的问题

时间:2017-03-20 17:34:02

标签: python download ftp directory ftplib

我正在尝试将文件从ftp服务器下载到本地文件夹。下面我已经包含了我的代码,脚本能够成功访问ftp并在ftp服务器上列出文件的名称,但是我的问题在于我不知道如何将它们下载到本地目录。

from ftplib import FTP
import os, sys, os.path

def handleDownload(block):
    file.write(block)

ddir='U:/Test Folder'
os.chdir(ddir)
ftp = FTP('sidads.colorado.edu')
ftp.login()

print ('Logging in.')
directory = '/pub/DATASETS/NOAA/G02158/unmasked/2012/04_Apr/'

print ('Changing to ' + directory)
ftp.cwd(directory)
ftp.retrlines('LIST')

print ('Accessing files')

filenames = ftp.nlst() # get filenames within the directory
print (filenames)

我尝试使用下面的代码,但它在下面的照片中给出了错误。

for filename in filenames:
    if filename != '.':
        local_filename = os.path.join('U:/Test Folder/',                   filename)
    file = open(local_filename, 'wb')
    ftp.retrbinary('RETR '+ filename, file.write)
    file.close()
ftp.quit()

enter image description here

1 个答案:

答案 0 :(得分:0)

尝试以下方法:

for filename in filenames:
    if filename not in ['.', '..']:
        local_filename = os.path.join(ddir, filename)

        with open(local_filename, 'wb') as f_output:
            ftp.retrbinary('RETR '+ filename, f_output.write)

ftp.quit()

您的代码仍在尝试下载.个文件名。您需要缩进有效文件名的写入。此外,通过使用with,它将自动关闭文件。