python基于FTP实现文件传输相关功能代码实例
这篇文章主要介绍了python基于FTP实现文件传输相关功能代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
本实例有文件传输相关功能,包括:文件校验、进度条打印、断点续传
客户端示例:
importsocket
importjson
importos
importhashlib
CODE={
'1001':'重新上传文件'
}
deffile_md5(file_path):
obj=open(file_path,'rb')
m=hashlib.md5()
forlineinobj:
m.update(line)
obj.close()
returnm.hexdigest()
defjdt(size,total_size):
'''
显示进度条
'''
val=int(size/total_size*100)
print('\r%s%%|%s'%(val,'#'*val,),end='')
defsend_file(exist_size,file_total_size):
'''
发送文件
:paramexist_size:开始读取字节的位置
:paramfile_total_size:文件大小
:return:
'''
f=open(file_path,'rb')
f.seek(exist_size)
send_size=exist_size
whilesend_size>>')
#1、自定义协议{'cmd':'upload','file_name':'...'}
cmd,file_path=user_input.split('|',maxsplit=1)
ifcmd=='upload':
upload(file_path)
elifcmd=='download':
pass
服务端示例:
importsocketserver
importjson
importos
importshutil
CODE={
'1001':'重新上传文件'
}
defupload(cmd_dict,conn,username):
'''服务端完成上传文件(含断点续传)'''
#2.获取文件信息
file_md5=cmd_dict['md5']
file_name=cmd_dict['file_name']
file_md5_path=os.path.join('home',username,file_md5)
file_name_path=os.path.join('home',username,file_name)
upload_file_size=cmd_dict['size']
#3.判断文件是否存在
exist=os.path.exists(file_md5_path)
ifnotexist:#不续传
#3.1.1通知可以开始上传,已经准备好
response={'code':1001}
conn.sendall(json.dumps(response).encode('utf8'))
#3.1.2接收上传的文件内容
f=open(file_md5_path,'wb')
recv_size=0
whilerecv_size
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。