ファイル転送、PythonとFTP
2353 ワード
ファイル転送プロトコル(FTP)は主に匿名で公開ファイルをダウンロードするために用いられ、2台のコンピュータ間の転送ファイルにも用いられ、特にwindowsを用いて動作し、ファイルストレージシステムがUNIXを用いる場合に用いられる.Webが流行する前に、FTPはネット上でファイルの伝送とソフトウェアとソースコードのダウンロードを行う主な手段の一つだった.FTPは、リモートFTPサーバにアクセスするにはユーザー名とパスワードを入力する必要がありますが、匿名アクセスも許可されます.ただし、管理者は、匿名ユーザーのログインを許可するためにFTPサーバを設定する必要があります.この場合、匿名ユーザーのユーザー名は「anonymous」で、パスワードは一般的にユーザーの電子メールアドレスです.
FTPの全体の仕事の流れは以下の通りである:1.クライアントはリモートホスト上のFTPサーバ2に接続する.クライアントはアカウントのパスワード(または「anonymous」と電子メールアドレス)3を入力します.クライアントは各種のファイル転送と情報照会操作を行う.クライアントはリモートFTPサーバーから退出し、転送を終了する
もちろん、これは一般的な伝送にすぎず、ネットワークの原因や両側のコンピュータがクラッシュして伝送が完了する前に中断することがある.クライアントが15分以上(900秒)応答しない場合、FTP接続はタイムアウトして中断します.
PythonのFTPサポートを使用する場合、必要なのはftplibモジュールをインポートし、ftplibをインスタンス化することだけです.FTPクラスオブジェクト.すべてのFTP操作(ログイン、ファイル転送、ログアウトなど)はこのオブジェクトを使用して操作します.
次はPythonの偽コードです
クライアントFTPプログラム例
FTPの全体の仕事の流れは以下の通りである:1.クライアントはリモートホスト上のFTPサーバ2に接続する.クライアントはアカウントのパスワード(または「anonymous」と電子メールアドレス)3を入力します.クライアントは各種のファイル転送と情報照会操作を行う.クライアントはリモートFTPサーバーから退出し、転送を終了する
もちろん、これは一般的な伝送にすぎず、ネットワークの原因や両側のコンピュータがクラッシュして伝送が完了する前に中断することがある.クライアントが15分以上(900秒)応答しない場合、FTP接続はタイムアウトして中断します.
PythonのFTPサポートを使用する場合、必要なのはftplibモジュールをインポートし、ftplibをインスタンス化することだけです.FTPクラスオブジェクト.すべてのFTP操作(ログイン、ファイル転送、ログアウトなど)はこのオブジェクトを使用して操作します.
次はPythonの偽コードです
from ftplib import FTP
f = FTP('some.ftp.server')
f.login('anonymous','[email protected]')
.
.
.
f.quit()
クライアントFTPプログラム例
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import ftplib
import os
import socket
HOST = 'FTP '
DIRN = ' '
FILE = ' '
def main():
try:
f = ftplib.FTP(HOST) # FTP , FTP
except (socket.error,socket.gaierror) as e:
print('error:cannot reach "%s"' % HOST)
return
print('...connected to host "%s"' % HOST)
try:
f.login() # “anonymous”
except ftplib.error_perm as e:
print('error:cannot login anonymously')
f.quit()
return
print('...logged in as "anonymously"')
try:
f.cwd(DIRN) #
except ftplib.error_perm as e:
print('error:cannot CD to "%s"' % DIRN)
f.quit()
return
print('...changed to "%s" forder' % DRIN)
try:
f.retrbinary('RETR %s' % FILE,open(FILE,'wb').write) # , FILE
except ftplib.error_perm as e:
print('error:cannot read file "%s"' % FILE)
os.unlink(FILE)
else:
print('...downloaded "%s" to CWD' % FILE)
f.quit()
if __name__ == '__main__':
main()