日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python文件拷贝并校验_初级版python登录验证,上传下载文件加MD5文件校验

發(fā)布時間:2025/4/17 python 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python文件拷贝并校验_初级版python登录验证,上传下载文件加MD5文件校验 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

importosimportjsonimportsocketimportstructimporthashlib#import time

deflogin():

usr= input('請輸入用戶名:')

pwd= input('請輸入密碼:')

usr_info_dic= {'username': usr, 'password': pwd, 'operate': 'login'}

usr_info=json.dumps(usr_info_dic).encode()

client.send(usr_info)

ret= client.recv(1024).decode()

flag_dic=json.loads(ret)if flag_dic['flag']:print('登錄成功')return {'flag': 1}else:print('登錄失敗')return {'flag': 0}defupload():#F:\test.mp4

file_path = input('請輸入文件路徑:')

file_size=os.path.getsize(file_path)

file_name=os.path.basename(file_path)

file_info= {'filesize': file_size, 'filename': file_name, 'operate': 'upload'}

file_dic=json.dumps(file_info).encode()

file_len= struct.pack('i', len(file_dic))#發(fā)送文件信息

client.send(file_len)

client.send(file_dic)

total_size=file_size#打開文件準備上傳文件

md5_data =hashlib.md5()

f1= open(file_path, 'rb')whilefile_size:

content= f1.read(2048*10)

md5_data.update(content)

file_size-=len(content)

client.send(content)print('\r已上傳%s%%' % int((1 - file_size / total_size) * 100), end='')print('上傳成功!')

f1.close()

md5sum=md5_data.hexdigest()print(md5sum)#time.sleep(0.1)

client.send(md5sum.encode())return {'flag': 1}defdownload():#F:\test.mp4

file_name = input('請輸入文件名:')

file_info= {'filename': file_name, 'operate': 'download'}

file_dic=json.dumps(file_info).encode()

file_len= struct.pack('i', len(file_dic))## 發(fā)送文件信息

client.send(file_len)

client.send(file_dic)

dic_len= client.recv(4)

dic_size= struct.unpack('i', dic_len)[0]

dfile_info=json.loads(client.recv(dic_size))

md5_data=hashlib.md5()for dir_index, dir_name in enumerate(dfile_info['dir_list']):print(dir_index, dir_name)

total_size= dfile_info['filesize']

f1= open('down' + file_name, 'wb')while dfile_info['filesize'] >0:#在最后接收文件不足2048時接收精準字節(jié),避免與后面發(fā)送的數(shù)據(jù)發(fā)生粘包

if 0 < dfile_info['filesize'] < 1204:

content= client.recv(dfile_info['filesize'])else:

content= client.recv(2048)

md5_data.update(content)

f1.write(content)

dfile_info['filesize'] -=len(content)print('\r已下載%s%%' % int((1-dfile_info['filesize'] / total_size) * 100), end='')

f1.close()

md5sum=md5_data.hexdigest()#print('\n', md5sum)

recv_md5= client.recv(32).decode()#print(recv_md5)

if md5sum ==recv_md5:print('校驗成功')return {'flag': 1}else:print('校驗失敗')return {'flag': 0}#print('下載成功!')

#return {'flag': 1}

defchoose_cmd():print('''1.上傳文件

2.下載文件

3.退出上傳下載文件''')

cmd= input('請輸入序號選擇相應操作')

dic= {'cmd': cmd}

cmd_dic=json.dumps(dic).encode()

client.send(cmd_dic)returndic

client=socket.socket()#client.connect(('192.168.13.13', 8001))

client.connect(('127.0.0.1', 8001))

login_ret=login()if login_ret['flag']:while login_ret['flag']:

cmd_ret=choose_cmd()if cmd_ret['cmd'] == '1':

upload()elif cmd_ret['cmd'] == '2':

download()elif cmd_ret['cmd'] == '3':break

else:print('輸入的序號有誤')else:print('請重新登錄')

client.close()

總結(jié)

以上是生活随笔為你收集整理的python文件拷贝并校验_初级版python登录验证,上传下载文件加MD5文件校验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。