[PIPython] script ftp

Gaggero Riccardo riccardo.gaggero
Ven 19 Nov 2004 15:16:38 CET


Sto iniziando a usare python e volevo crearmi uno script ftp client in cui
paramentrizzo i miei dati e debba passargli solo il file origine e quello
destinazione
la cosa funziona ma l'eccezione degli errori per niente 
se sbaglio l'inserimento del file mi ritorna il codice del programma con gli
evventuali errori mentre io vorrei che mi uscisse dallo script e basta.. 

dove sbaglio??
e la starda giusta quella dell'uso delle ftplib ??

""" Script ftp client """
import time
import commands
LOG_PATH = 'c:/log/'                #Path del log file
FTP_ADDR = '10.0.2.122'             #indirizzo IP della macchina remota
FTP_USER = 'xx'                #ftp username
FTP_PWD = 'xx'                     #ftp password
FTP_REMOTE_DIR = '/home/ced_rik/'   #dir remota
PATH_OUTPUT_FTP_FILE = "c:/log/"    #Path del file scaricati


def dataodierna():
    # Ritorna una stringa con la data di oggi in formato GGMMAA
    data = time.strftime('%d%m%y',time.localtime(time.time()))
    return data
def updatelog(messaggio):
    # Stampa un messaggio a video e salva un log delle operazioni
    print 'log> '+messaggio
    timenowstr = time.asctime(time.localtime(time.time()))
    msgwrite = timenowstr + ": " + messaggio + '\n'
    filelog = open(LOG_PATH+'log_ftp.txt','a')
    filelog.write(msgwrite)
    filelog.close()
def spawntarfile(ftp_file):
    # Esegue un FTP su una macchina remota e copia l'archivio
    updatelog('- inizio connessione ftp con '+FTP_ADDR)
    try:
        from ftplib import FTP
        ftp = FTP(FTP_ADDR)
        updatelog('- connesso. Invio login...')
        ftp.login(FTP_USER,FTP_PWD)
        updatelog('- logged. Ricezione file...')
#        ftp.retrbinary('RETR '+ftp_file,
open(PATH_OUTPUT_FTP_FILE+ftp_file, 'wb').write)
        ftp.retrlines('RETR '+ftp_file, open(PATH_OUTPUT_FTP_FILE+ftp_file,
'wb').write)
    except (ftplib.error_perm, ftplib.error_temp,ftplib.error_reply,
ftplib.error_proto):
        updatelog('- errore nella ricezione FTP. Abbandono la sessione.')
        #mettere qui il richiamo ad una routine per la gestione sistematica
degli errori di connessione FTP, dei retry e degli abort.
        ftp.quit()
    else:
        updatelog('- chiusura FTP')
        updatelog('- copiato '+ ftp_file+' in '+
PATH_OUTPUT_FTP_FILE+ftp_file)
        ftp.quit()
if __name__ == '__main__':
    print('\n\Script FTP')
    print('EDP Team\n\n')
    updatelog('- inizio operazioni')
from ftplib import FTP
ftp = FTP(FTP_ADDR)
ftp.login(FTP_USER,FTP_PWD)
ftp.retrlines('LIST')     
ftp.quit()
INPUT_FILE = raw_input  ("Digitare il file di scaricare: ")
spawntarfile(INPUT_FILE)
#commands.getoutput('rm '+bakfilename)... volendo.
updatelog('- fine operazioni\n\n')



More information about the Python mailing list