PythonのftplibでFTP接続と操作

スポンサーリンク
スポンサーリンク

はじめに

ftplibのライブラリでの説明を行います。ftplibは標準ライブラリですのでインストールは不要です。

公式サイトは以下です。

ftplib --- FTPプロトコルクライアント — Python 3.9.4 ドキュメント

FTP接続

ftp = FTP(host)

  • FTPサーバを指定します。

ftp.login(username, password)

  • ユーザー名とパスワードでログイン(接続)します。
from ftplib import *

ftp = FTP(host)
ftp.login(username, password)

FTPの切断

処理が終わったら切断しましょう。

ftp.quit()

ディレクトリの移動

ftp.cwd(dir)

  • ディレクトリを指定します。ディレクトリは複数階層を指定して一気に移動することが可能です。
ftp.cwd(dir)

ディレクトリ内のファイルとディレクトリの一覧

files = ftp.nlst(dir)

  • ディレクトリを指定します。ディレクトリは複数階層を指定して一覧を取得することも可能です。
    • 現在のディレクトリの場合は、”.”と指定します。
    • 他のディレクトリは、”./www/docs/”などと指定します。ただし、一覧で取得した値にディレクトリ名も含まれます。
files = ftp.nlst(dir)
print(files)

ファイルのアップロード

バイナリー転送モードでアップロードします。

ftp.storbinary("STOR " + filepath, fp)

  • 第一引数:"STOR "とアップロード先のパスとファイル名を指定します。
  • 第二引数:アップロードするファイルを指定します。ファイルを開く必要があります。
with open(filename, 'rb') as fp:
    ftp.storbinary("STOR " + filepath, fp)

ファイルのダウンロード

個別ダウンロード

バイナリー転送モードでダウンロードします。

ftp.retrbinary('RETR ' + filepath, fp.write)

  • 第一引数:'RETR 'とダウンロード先のパスとファイル名を指定します。
  • 第二引数:アップロードするファイルを指定します。開いたファイルに書き込む必要があります。
with open(filename, 'wb') as fp:
    ftp.retrbinary('RETR ' + filepath, fp.write)

一括ダウンロード

特に関数がある訳ではないですが、プログラムのサンプルになります。

# ファイル一覧の取得.
files = ftp.nlst(".")

for filename in files:
    # 個別にダンロード
    with open(filename, 'wb') as fp:
        ftp.retrbinary('RETR ' + filename, fp.write)

 

コメント

タイトルとURLをコピーしました