ftplibを使う | Pythonでなんか作ってみる

ftplibを使う

今日、都合によりrcpが通らないサーバがあり、サーバ管理者にも手が届かないので、pythonとftpで何とかすることにした。

最初は、ライブラリリファレンスを見ながら、対話モードでftplibを使う。

>>> from ftplib impot FTP
>>> ftp=FTP('xx.xx.xx.xx')
>>> ftp.login(user,password)
>>> ftp.dir()
-rw-rw-rw- ..............
.............................................

比較的簡単にFTPを動かせた。

ファイルの取得もドキュメントどおり、

>>> ftp.retrbinary('RETR README', open('README', 'wb').write)
'226 Transfer complete.'
>>> ftp.quit()


再帰的にファイルを取得するための関数を書く

>>> def rnlst(ftp, base_dir, sub_dir='.'):
... ret = []
... items = []
... ftp.dir( '%s/%s' % (base_dir,sub_dir), items.append)
... for i in items:
... if i[0] != '-' and i[0] != 'd': continue
... item = (i[0], '%s/%s' % (sub_dir,i.split()[-1]))
... if i[0] == '-':
... ret.append(item)
... else:
... sub = rnlst(ftp, base_dir, '%s/%s' % (sub_dir,item[1]) )
... if len(sub) > 0:
... ret.append(item)
... ret += sub
... return ret


こんな感じだったかな?記憶だけで書いているので間違っている気もする。