2

Pythonを使用してたくさんのファイルをアップロードしようとしていますftplib
問題が接続エラーであることを確認するために(再接続できるように)、どのような例外をキャッチする必要がありますか?


編集:私はこのシナリオで
試しました:all_errors

  • ftplibファイルのアップロード前に(デバッガーを介して)アプリケーション によってFTPサーバーに接続され、一時停止されました
  • サーバー経由の接続を閉じました
  • 再開されたアプリケーション

このコードで:

        try:        
            self.f.cwd(dest)
            return self.f.storbinary(('STOR '+n).encode('utf-8'), open(f,'rb'))
        except ftplib.all_errors as e:
            print e

例外がキャッチされましたall_errorsが、空でした:

e   EOFError:   
    args    tuple: ()   
    message str:    
4

3 に答える 3

2

ドキュメントで調べることができます: http://docs.python.org/2/library/ftplib.html#ftplib.error_reply

また、忘れないでください: http://docs.python.org/2/library/ftplib.html#ftplib.all_errors

于 2013-01-13T12:42:09.600 に答える
2

このようにしてみて、

import socket
import ftplib

try:
    s = ftplib.FTP(server , user , password) 
except ftplib.all_errors as e:
    print "%s" % e
于 2013-01-13T12:46:14.903 に答える
2

ftp サーバーとの間の両方で例外をキャッチする簡単な方法は次のとおりです。

import ftplib, os

def from_ftp( server, path, data, filename = None ):
    '''Store the ftp data content to filename (anonymous only)'''
    if not filename:
        filename = os.path.basename( os.path.realpath(data) )

    try:
        ftp = ftplib.FTP( server )
        print( server + ' -> '+ ftp.login() )        
        print( server + ' -> '+ ftp.cwd(path) ) 
        with open(filename, 'wb') as out:
            print( server + ' -> '+ ftp.retrbinary( 'RETR ' + data, out.write ) ) 

    except ftplib.all_errors as e:
        print( 'Ftp fail -> ', e )
        return False

    return True

def to_ftp( server, path, file_input, file_output = None ):
    '''Store a file to ftp (anonymous only)'''
    if not file_output:
        file_output = os.path.basename( os.path.realpath(file_input) )

    try:
        ftp = ftplib.FTP( server )
        print( server + ' -> '+ ftp.login() )        
        print( server + ' -> '+ ftp.cwd(path) ) 
        with open( file_input, 'rb' ) as out:
            print( server + ' -> '+ ftp.storbinary( 'STOR ' + file_output, out ) ) 

    except ftplib.all_errors as e:
        print( 'Ftp fail -> ', e )
        return False

    return True
于 2014-10-30T02:37:52.763 に答える