2013-08-17 3 views
0

В приведенном ниже скрипте будут загружены только имена файлов с ftp-сайта, а не фактический файл, который я хочу загрузить, поэтому после скачивания размер файла остается 0. У вас есть идея, что вызывает проблему? Любая помощь будет оценена.Python - Скачайте все файлы из каталога ftp

import os 
from ftplib import FTP 
import time 


# Connects to remote ftp server 
def connect_ftp(hostname, username, password, source_directory, destination_directory): 
    os.chdir(destination_directory) 

    print("Connecting to " + hostname + "...") 
    ftp = FTP(hostname) 
    ftp.login(username, password) 

    print(ftp.getwelcome()) 
    print("Connected Successfully!\n") 

    ftp.cwd(source_directory) 

    download_files(ftp) 


# Download files 
def download_files(ftp): 
    print("This script will only download files, not directories.") 
    print("Files at " + source_directory + ":\n") 
    ftp.retrlines("LIST") 

    file_list = [] 
    ftp.retrlines("NLST", file_list.append) 

    print("") 

    i = 0 
    for filename in file_list: 
     if (filename != '.') and (filename != '..'): 
      print("Downloading " + filename + "...") 
      try: 
       ftp.retrbinary("RETR " + filename, open(filename, "wb").write) 
       i=i+1 
      except Exception as directory_error: 
       print ("Oops! Was " + filename + " a directory? I won't download directories.") 

    print(str(i) + " files successfully downloaded.\n") 

    disconnect_ftp(ftp) 


# Disconnects from ftp server 
def disconnect_ftp(ftp): 
    print("Disconnecting from " + hostname + "...")  
    ftp.quit() 
    print("Disconnected from " + hostname + ".") 
    time.sleep(4) 


hostname = "ftpsite"         # TODO: Replace with the hostname of the server you want to connect to 
username = ""              # TODO: Replace the username 
password = ""              # TODO: Replace the password 
source_directory = "/source/directory/" # TODO: Change location to wherever you want to start the download 
destination_directory = "C:\example\FTP"       # TODO: Change the location of where you want to download the files to 

connect_ftp(hostname, username, password, source_directory, destination_directory) 
+0

Загрузка всех файлов в директории, по существу, такой же, как загрузить каталог, все, что вам нужно сделать, это сначала создать каталог назначения с таким же именем, как и на источник, из которого происходят файлы. – martineau

+0

Спасибо за предложение @martineau. – user

+0

Загружает файл, но размер файла 0 kb. «0 файлов успешно загружено». – user

ответ

-1

Зачем использовать Python? В * системы Никс оболочки, выполните команду:

wget -r ftp://source/directory 
+0

Я попросил использовать Python, и тогда я должен создать GUI для этого. Не только процесс загрузки. – user

Смежные вопросы