👻
Python ftplib FTP操作
Python ftplibのFTP操作
公式
接続する
import ftplib
ftp = ftplib.FTP()
ftp.connect('xxx.xxx.xxx.xxx', port=21, timeout=60)
msg = ftp.login('user', 'password')
ftp.login(user, password)
は、メッセージを返す。成功すると、
230 User ユーザー名 logged in
FTP Response Codeの一覧はこちら
Passive/Activeの設定はこうする。DefaultがPassiveなのでTrueなら省略。
ftp.set_pasv(True)
DirectoryとFileを確認
# カレントディレクトリを取得
ftp_current_dir = ftp.pwd()
# カレントディレクトリを移動
ftp.cwd('/foo/bar')
# カレントディレクトリのファイルとディレクトリの一覧をリストで取得
file_list = ftp.nlst(".")
ファイルかディレクトリか、等の詳細がほしい場合はmlsd
mlsd = ftp.mlsd(".") # generatorが返ってくる
for i in mlsd:
print(str(i))
('.', {'modify': '2022xxxxxxxxxx', 'perm': 'flcdmpe', 'type': 'cdir', 'unique': 'xxx', 'unix.group': '1000', 'unix.groupname': 'users', 'unix.mode': '0705', 'unix.owner': '1232', 'unix.ownername': 'xxx'})
('..', {'modify': '2022xxxxxxxxxx', 'perm': 'flcdmpe', 'type': 'pdir', 'unique': 'xxx', 'unix.group': '1000', 'unix.groupname': 'users', 'unix.mode': '0700', 'unix.owner': '1232', 'unix.ownername': 'xxx'})
('file.jpg', {'modify': '2022xxxxxxxxxx', 'perm': 'adfrw', 'size': '2275', 'type': 'file', 'unique': 'xxx', 'unix.group': '1000', 'unix.groupname': 'users', 'unix.mode': '0604', 'unix.owner': '1232', 'unix.ownername': 'xxx'})
('dir', {'modify': '2022xxxxxxxxxx', 'perm': 'flcdmpe', 'type': 'dir', 'unique': 'xxx', 'unix.group': '1000', 'unix.groupname': 'users', 'unix.mode': '0705', 'unix.owner': '1232', 'unix.ownername': 'xxx'})
ファイルをアップロード、ダウンロード、削除
# upload
with open('C:/upload/suru/file.jpg', "rb") as f:
ftp.storbinary("STOR ./upload/sakino/dir/to/file_name.txt', f)
# download
with open('C:/download/surudir/file.jpg', 'wb') as f:
ftp.retrbinary('RETR file.jpg', f.write)
# ファイルに保存せずに、一行ずつリストに入れる
textdata = list()
ftp.retrlines('RETR file.txt', textdata.append)
# delete
ftp.delete(file.jpg)
Discussion