ftp 上传(py)

简介:
什么都不说,在代码里
# !/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()

本文转自博客园刘凯毅的博客,原文链接:ftp 上传(py),如需转载请自行联系原博主。



目录
相关文章
|
Linux
Linux基础命令---mput上传ftp文件
mput 使用lftp登录ftp服务器之后,可以使用put指令将文件上传到服务器。mput指令可以使用通配符,而put指令则不可以。 1、语法 mput [-c] [-d] [-a] [-E] [-O base] files 2、选项列表 -d 穿件与文件...
4230 0
|
Linux 数据安全/隐私保护
Linux基础命令---put上传ftp文件
put 使用lftp登录ftp服务器之后,可以使用put指令将文件上传到服务器。 1、语法 put [-E] [-a] [-c] [-O base] lfile [-o rfile] 2、选项列表 -o 指定输出文件的名字,不指定则使用原来的名字 -...
8232 0
|
开发者
FTP 上传与解压缩文件 | 学习笔记
快速学习 FTP 上传与解压缩文件
FTP 上传与解压缩文件 | 学习笔记
|
机器学习/深度学习 网络协议 安全
|
Java 应用服务中间件 存储
17、【 商品管理模块开发】——后台商品图片的springmvc和富文本上传以及ftp文件服务器的开发
1、FTP文件服务器的搭建: 软件下载:ftpserver; image.png 浏览器访问:ftp://127.0.0.1/ image.
1598 0
FileZilla Sever FTP 上传失败 无错误码 无权限
这里介绍下服务端用的FileZilla Sever 客户端FTP 上传直接失败 并且无错误码的解决方法 打开服务器端FileZiila Sever 点击Edit ——> Users 左上角的Shared floders 把右边的权限都勾上就行了!!!点击OK,搞定
1804 0
|
Linux Shell
Linux FTP上传脚本
!/bin/bash =========================================== 先输入系统所需要的数据 host="192.
568 0
|
Linux 数据安全/隐私保护 Windows