ftpにファイルをアップロードする
pythonでftpにファイルをアップロードするスクリプトをつくってみたので公開します。
いつもはlinuxで暮らしているので、scpで事足りているのですが、windowsで使いたいという要望を受け、書き起こしたものです。
"FTP Information" から下の部分に接続先の情報を入れてください。
"target dir Information"の下の部分は、転送したいファイル。
複数のファイルを入れることもできます。
一応、日本語ファイルでも行けます。
2010/10/31 追記
転送ファイルがひとつだった場合、転送が行われないバグがあります。
修正版は手があいたときに・・・。
2010/11/01 追記
修正いれておきました。
今更気がついたんですが、この方法だとブロックがめちゃくちゃですね・・・。
このまま貼りつけてもエラーになるはずです。
def,if,forのあたりにブロックいれれば動きますが・・・
方法検討します。 -> 入力したコードやはてな記法をそのまま表示する(スーパーpre記法)
#------------------------------------------------------------------------------- # Name: putftp # Purpose: # # Author: earth # # Created: 28/10/2010 # Copyright: (c) earth 2010 #------------------------------------------------------------------------------- #!/usr/bin/env python # -*- coding: UTF-8 -*- import sys import md5 import os import glob from ftplib import FTP from urllib import urlopen #################################### #FTP Information #################################### ftp_serveraddress="ftp.example.jp" ftp_serverport="21" ftp_user='username' ftp_password='password' ftp_putdir="/targetdir/" ################################### #target dir Information src_dir="C:/*.txt" #################################### def putftp(uploadlist): ftp=FTP(ftp_serveraddress) ftp.login(ftp_user,ftp_password) ftp.cwd(ftp_putdir) if isinstance(uploadlist, list): for file in uploadlist: f=open(file,'rb') filename=os.path.basename(unicode(file,"mbcs")) command='STOR '+filename.encode("mbcs") print command ftp.storbinary(command,f) f.close() else: f=open(uploadlist,'rb') filename=os.path.basename(uploadlist) command='STOR '+filename.encode("mbcs") print command ftp.storbinary(command,f) f.close() ftp.quit() </span> def main(): filelist=glob.glob(src_dir) putftp(filelist) if __name__ == '__main__': main()