Pythonは、ファイルを取得し、ローカルにダウンロードしたFTP

最近、需要がローカルサーバへのアクセスを提供するために、FTP上の他の画像に対処する必要があるシェル自体もforループを達成することができます需要のFTPコマンドをサポートしているため、当初計画の考え方は、シェルの操作を使用することです。しかし、その後のことを考えたりテイクPythonの操作;その後、Baiduのオンラインを進め、例外なく、その直接の使用にコピーされないように失望しました。こうして変更されたコードです。まだ少し心が物事を学ぶために、限り、特定の操作コードftpアカウントのパスワードが変更されているように、対応するディレクトリを使用します

それはノートに、この時点で注意しなければならないos.path.join使い方です

#!は/ usr / binに/ Pythonの
# - * -コーディング:UTF-8 - * -
"" "
FTPの一般的な操作
" ""
ftplibのインポートからFTP
インポートOS
クラスFTP_OP(オブジェクト):
DEF __init __(自己、ホスト、ユーザ名、パスワード、ポート):
"" "
FTPを初期化
:PARAMホスト:FTPホストのIP
:ユーザー名のparam:FTPユーザ名
:PARAMパスワード:FTPパスワード
:PARAMポート:FTPポート(デフォルト21)"
""
self.host =ホスト
セルフ。ユーザ名=ユーザ名
self.password =パスワード
self.port =ポート
DEF FTP_CONNECT(自己):
"" "
接続されているFTP
:リターン:
" "「
FTP = FTP()
ftp.set_debuglevel(1)#何のデバッグモードが有効されていない
ftp.connect(ホスト= self.host、ポート= self.portを)# のFTP接続
FTPの中ftp.login(self.username、self.passwordを)#ログ
ftp.set_pasv(偽)## ftpのアクティブおよびパッシブモードの必要性がある調整する
リターンFTP
DEF DOWNLOAD_FILE(セルフ、ftp_file_path、dst_file_path):
"" "
あなたへのFTPダウンロードから
:PARAM ftp_file_path:ftpのダウンロードファイルパス
:PARAM dst_file_path:ローカルストレージ・パス
:リターン:
" ""
BUFFER_SIZE = 102400#デフォルトである8192
のftp = self.ftp_connect()
印刷(ftp.getwelcome())#のftpログイン情報
file_listの= ftp.nlst(ftp_file_path)
file_listに示されるFILE_NAME用:
プリント( "FILE_NAME" + FILE_NAME)
ftp_file = os.path.join(ftp_file_path、FILE_NAME)
プリント( "ftp_file:" + ftp_file)
#write_file = os.path.join(dst_file_path、FILE_NAME)
WRITE_FILE = dst_file_path + FILE_NAME ##在这里如果使用os.path.join进行拼接的话会丢失dst_file_path路径、与上面的拼接路径不一样
プリント( "WRITE_FILE" + WRITE_FILE)
場合file_name.find( 'PNG')> - 1なくはos.path。 (WRITE_FILE)が存在する
:プリント(+ FILE_NAME "FILE_NAME")
#ftp_file = os.path.join(ftp_file_path、FILE_NAME)
#write_file = os.path.join(dst_file_path、FILE_NAME)
としてオープン(WRITE_FILE、 "WB")とF:
ftp.retrbinary( 'RETR%s'は%ftp_file、f.write、BUFFER_SIZE)
#f.close()
ftp.quit()

の場合__name__ == '__main__':
ホスト= "192.168.110 **"
ユーザ名= " ****」
パスワード= "****"
ポート= 21
ftp_file_path = "/ ERP-モール/" #FTP目录
dst_file_path = "/ルート/ 11" #本地目录
のftp = FTP_OP(ホスト=ホスト、ユーザ名=ユーザ名、パスワード=パスワード、ポート=ポート)
ftp.download_file(ftp_file_path = ftp_file_path、dst_file_path = dst_file_path)

おすすめ

転載: www.cnblogs.com/coolIt/p/12568975.html