Skynet

---------- ---------- 我的新 blog : liukaiyi.cublog.cn ---------- ----------

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  112 Posts :: 1 Stories :: 49 Comments :: 0 Trackbacks

什么都不说,在代码里
#!/usr/bin/env python
#
-*- encoding: utf8 -*-
from ftplib import FTP
import sys,os,getopt

opts,args
=getopt.getopt(sys.argv[1:],'hf:d:i:u:p:')

def usage():
    
print '''
Help Information:
  上传正常结束后,会在上次文件边创建成功状态文件夹,名称为 [上次文件名.state ]
    -h : Show help information
    -f : local upload file   eg -> /home/user/xx/file.tar
    -d : upload to ftp path  eg -> /x/xx/xxx 
    -i : [optional] Default 122.102.xx.xx
    -u : [optional] Default xx
    -p : [optional] Default *** (xx passwd)
    
'''


fip
='122.xx.xx.xx'
fur
='xx'
fpw
='123'
for o,a in opts:
    
if o=='-h':
        usage()
        sys.exit()
    
if o=='-f' : upload_file=a
    
if o=='-d' : ftp_path=a
    
if o=='-i' : fip=a
    
if o=='-u' : fur=a
    
if o=='-p' : fpw=a


ftp 
= FTP(fip)
ftp.login(fur,fpw)

if not ( locals().has_key('ftp_path'and locals().has_key('upload_file') ):
    usage()
    sys.exit()


# 迭代 创建 目录 
to_path='/'
for sp in ftp_path.split('/')[1:]:
    drs 
= ftp.nlst(to_path)
    
if to_path=='/':to_path+=sp
    
else : to_path+='/'+sp
    
if not to_path in drs :
        ftp.mkd(to_path)

#到 最终 目录下 
ftp.cwd(to_path)


# 上传准备
bufsize = 1024
file_handler 
= open(upload_file,'rb')
file_name
=os.path.split(upload_file)[1]

# 判定是否 有 上传完 状态文件夹,如果有删除
sfile=to_path+'/'+file_name+'.state'
if sfile in ftp.nlst(to_path):
    
print '[Resend] delete original dir state '+sfile
    ftp.rmd( sfile )
    
# 上传文件
ftp.storbinary('STOR %s' % (file_name),file_handler,bufsize)

# 如果 上传 文件大小不一 ,不标注 成功 上传 状态文件夹 
if not os.path.getsize(upload_file) == ftp.size(to_path+'/'+file_name) :
    
print '[Error]  upload to ftp size Different ! '
    sys.exit()

# 上传 成功 创建标示状态 文件夹 
ftp.mkd(sfile)
file_handler.close()
ftp.quit()




整理 www.blogjava.net/Good-Game
posted on 2009-09-09 10:01 刘凯毅 阅读(1542) 评论(1)  编辑  收藏 所属分类: python

Feedback

# re: ftp 上传(py) 2009-09-22 14:07 Taylor
download  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: