我正在尝试将文件从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()
答案 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
,它将自动关闭文件。