# 默写 TCP UDP 文件夹中的代码
# 完成一个上传和下载文件的小程序
???# server端 :根据客户端需求自定义
???# client端
???????# 客户端启动之后
???????# 选择 上传操作 还是 下载操作
???????# 如果是上传操作 : ?输入要上传的文件路径
???????????????# 基础需求 :直接将文件上传到默认目录
???????????????# 进阶需求 :将文件上传到指定目录
???????# 如果是下载文件 : 输入要下载的文件路径
???????????????# 基础需求 : 直接将文件下载到当前目录
???????????????# 进阶需求 :将文件下载到指定目录
# 字符串
# 文件 ?- ?读文件 转码 写文件
# 默写 TCP UDP 文件夹中的代码
# 完成一个上传和下载文件的小程序
???# server端 :根据客户端需求自定义
???# client端
???????# 客户端启动之后
???????# 选择 上传操作 还是 下载操作
???????# 如果是上传操作 : ?输入要上传的文件路径
???????????????# 基础需求 :直接将文件上传到默认目录
???????????????# 进阶需求 :将文件上传到指定目录
???????# 如果是下载文件 : 输入要下载的文件路径
???????????????# 基础需求 : 直接将文件下载到当前目录
???????????????# 进阶需求 :将文件下载到指定目录
# 字符串
# 文件 ?- ?读文件 转码 写文件
# 默写 TCP UDP 文件夹中的代码
# 完成一个上传和下载文件的小程序
???# server端 :根据客户端需求自定义
???# client端
???????# 客户端启动之后
???????# 选择 上传操作 还是 下载操作
???????# 如果是上传操作 : ?输入要上传的文件路径
???????????????# 基础需求 :直接将文件上传到默认目录
???????????????# 进阶需求 :将文件上传到指定目录
???????# 如果是下载文件 : 输入要下载的文件路径
???????????????# 基础需求 : 直接将文件下载到当前目录
???????????????# 进阶需求 :将文件下载到指定目录
# 字符串
# 文件 ?- ?读文件 转码 写文件
# 默写 TCP UDP 文件夹中的代码
# 完成一个上传和下载文件的小程序
???# server端 :根据客户端需求自定义
???# client端
???????# 客户端启动之后
???????# 选择 上传操作 还是 下载操作
???????# 如果是上传操作 : ?输入要上传的文件路径
???????????????# 基础需求 :直接将文件上传到默认目录
???????????????# 进阶需求 :将文件上传到指定目录
???????# 如果是下载文件 : 输入要下载的文件路径
???????????????# 基础需求 : 直接将文件下载到当前目录
???????????????# 进阶需求 :将文件下载到指定目录
# 字符串
# 文件 ?- ?读文件 转码 写文件
server端
import json
import socket
sk = socket.socket()
sk.bind((‘127.0.0.1‘,8080))
sk.listen()
conn,addr = sk.accept()
content = conn.recv(1024).decode(‘utf-8‘)
content_dic = json.loads(content)
if content_dic[‘operate‘] == ‘upload‘:
???conn.send(b‘received!‘)
???with open(content_dic[‘filename‘],‘wb‘) as f:
???????while content_dic[‘filesize‘]:
???????????file = conn.recv(1024)
???????????f.write(file)
???????????content_dic[‘filesize‘] -= len(file)
conn.close()
sk.close()
client端
import os
import json
import socket
sk = socket.socket()
sk.connect((‘127.0.0.1‘,8080))
def get_filename(file_path):
???filename = os.path.basename(file_path)
???return filename
#选择 操作
operate = [‘upload‘,‘download‘]
for num,opt in enumerate(operate,1):
???print(num,opt)
num = int(input(‘请输入您要做的操作序号 : ‘))
if num == 1:
???‘‘‘上传操作‘‘‘
???#file_path = ‘E:\python10\day33\作业.py‘
???file_path = input(‘请输入要上传的文件路径 : ‘)
???# 告诉对方要上传的文件的名字
???file_name = get_filename(file_path)
???# 读要上传的文件 存成字符串
???with open(file_path,encoding=‘utf-8‘) as ?f:
???????content = f.read()
???dic = {‘operate‘:‘upload‘,‘filename‘:file_name,‘content‘:content}
???# 将字符串send给server端
???str_dic = json.dumps(dic)
???sk.send(str_dic.encode(‘utf-8‘))
???# server端接收 bytes转码程字符串
???# server端打开文件 写文件
elif num == 2:
???‘‘‘下载操作‘‘‘
sk.close()
上传下载
原文地址:https://www.cnblogs.com/mys6/p/10799965.html