python入门第二十八天——文件上传

Posted 独孤_败天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python入门第二十八天——文件上传相关的知识,希望对你有一定的参考价值。

服务端:

 1 #!/usr/bin/env python3
 2 #-*- coding:utf-8 -*-
 3 ‘‘‘
 4 Administrator 
 5 2018/8/1 
 6 ‘‘‘
 7 import subprocess
 8 import socket,os
 9 
10 # 创建一个socket:
11     #family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None
12     #创建Socket时,AF_INET指定使用IPv4协议,
13     # 如果要用更先进的IPv6,就指定为AF_INET6
14     # AF_UNIX Unix不同进程之间的通信
15     #  SOCK_STREAM指定使用面向流的TCP协议 SOCK_DGRAM UDP协议
16 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
17 print(s)
18 address=(127.0.0.1,8000)
19 #建立连接
20 s.bind(address)
21 #监听设置端口等待客户端的请求数量
22 s.listen(3)
23 
24 
25 print(等待...........)
26 BASE_DIR=os.path.dirname(os.path.abspath(__file__))
27 
28 while True:
29     # accept 阻塞
30     conn, addr = s.accept()
31     print(addr)
32     while True:
33         data=conn.recv(1024)
34         cmd,filename,filesize=str(data,"utf8").split("|")
35         path=os.path.join(BASE_DIR,"img",filename)
36         filesize=int(filesize)
37 
38         f=open(path,"wb")
39 
40         get_sent=0
41         while get_sent != filesize:
42             data=conn.recv(1024)
43             get_sent+=len(data)
44             f.write(data)
45         print("接受完毕。")
46         f.close()
47 
48 
49 s.close()

客户端:

 1 #!/usr/bin/env python3
 2 # -*- coding:utf-8 -*-
 3 ‘‘‘
 4 Administrator 
 5 2018/8/1 
 6 ‘‘‘
 7 import socket,os,sys
 8 
 9 sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
10 print(sck)
11 address = (127.0.0.1, 8000) #192.168.0.103
12 sck.connect(address)
13 
14 BASE_DIR=os.path.dirname(os.path.abspath(__file__))
15 while True:
16     inp = input(">>>").strip()#post|kanqingzi.jpg
17 
18     cmd,path=inp.split("|")
19     path=os.path.join(BASE_DIR,path)#拼接路径
20 
21     filename=os.path.basename(path)#需要文件名字
22     filesize=os.stat(path).st_size#需要文件大小
23     #文件打包
24     file_info="post|%s|%s"%(filename,filesize)#字符串拼接
25     sck.sendall(bytes(file_info,"utf8"))
26 
27     with open(path,"rb") as f:
28         has_sent=0
29         while has_sent !=filesize:
30             data=f.read(1024)
31             sck.sendall(data)
32             has_sent+=len(data)
33     print("上传成功!!!")
34 
35 sck.close()


练习:远程控制对方电脑,并将对方电脑里面的图片发送过来。

 

以上是关于python入门第二十八天——文件上传的主要内容,如果未能解决你的问题,请参考以下文章

Python入门第四十八天Python丨NumPy 数组连接

大数据入门第十八天——kafka整合flumestorm

Spring入门第二十八课

(95)Wangdao.com_第二十八天_进度事件

Python之第二十八天的努力--collections模块

每日算法&面试题,大厂特训二十八天——第二十八天(数组)