咨询热线:15179479794 联系人:唐光平 地址:河东区津塘路174号
python新手总结(二)
来源:ag亚游开户 发布时间:2019-11-05 点击量:298
random模块
随机小数
randomuniform随机整数
randintrandrange随机抽取
choicesample打乱顺序
shufflerandom.random()
生成:0<n<1.0
uniform(x,y)
一定范围的随机浮点数 (包左包右)
random.uniform(x,y)
randint(x,y)
随机整数 (包左包右)
randrange(x,y,z)
随机整数(包左不包右)
random.randrange(10,100,4) #输出为10到100内以4递增的序列[10,14,18,22...]
choice(seq)
从序列中获取一个随机元素,参数seq
表示有序类型,并不是一种特定类型,泛指list
tuple
字符串等
import randomrandom.choice(range(10)) #输出0到10内随机整数random.choice(range(10,100,2)) #输出随机值[10,12,14,16...]random.choice("I love python") #输出随机字符I,o,v,p,y...random.choice(("I love python")) #同上random.choice(["I love python"]) #输出“I love python”random.choice("I","love","python") #Errorrandom.choice(("I","love","python")) #输出随机字符串“I”,“love”,“python”random.choice(["I","love","python"]) #输出随机字符串“I”,“love”,“python”
shuffle(list)
用于将一个列表中的元素打乱
sample()
从指定序列中随机获取k个元素作为一个片段返回,sample
不会改变原有序列
a="1232445566"b=[1,2,3,4,4,5]print(random.sample(b,2))print(random.sample(a,2))
time 时间模块
time.strftime("%Y-%m-%d %H:%M:%S")
sys模块
sys
是与python解释器相关的
sys.path
寻找文件的路径
sys.modules
导入多少路径
在编译器不能运行
name=sys.argv[1] # 有点类似input() 不过input是阻塞的pwd=sys.argv[2]if name="alex" and pwd =="alex3714":print("执行以下代码")else: exit()
os模块
print(os.getcwd()) # 在哪个地方执行这个文件,getcwd的结果就是哪个路径removedirs递归向上删除文件夹,只要删除当前目录之后,发现上一级目录也为空了,就把上一级目录删除如果发现上一级目录有其他文件,就停止os.listdir() (重要)列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方法打印
print(os.path.dirname(os.path.dirname(__file__)))#上一级再上一级目录,也就是工作区
序列化
得到一个字符串的结果,过程就叫序列化
字典/列表/数字/对象 -序列化-->字符串
为什么要序列化
要把内容写入文件网络传输数据eval
不能随便用
dump
dumps
load
loads
import jsondic={"aaa":"bbb","ccc":"ddd"}str_dic=json.dumps(dic) # 序列化print(dic)print(str_dic,type(str_dic))with open("json_dump","w") as f:# f.write(str_dic) # 反序列化 json.dump(dic,f)ret=json.loads(str_dic) # 反序列化print(ret,type(ret))with open("json_dump1") as f: print(type(json.load(f)))
json的限制
json格式的key必须是字符串数据类型,如果是数字为key那么dump之后会强行转成字符串数据类型
json格式中的字符串只能是双引号
json是否支持元祖,对元组做value的字典会把元组强制转换成列表
dic={"abc":(1,2,3)}str_dic=json.dumps(dic)print(str_dic)
json是否支持元组做key,会报错
pickle
dic={1:(12,3,4),("a","b"):4}pic_dic=pickle.dumps(dic)# 序列化 看不见 bytes类型print(pic_dic)new_dic=pickle.loads(pic_dic)# 反序列化对于对象的序列化需要这个对象对应的类在内存中dump的结果是bytes, dump用的f文件句柄需要以wb的形式打开,load所用的f是"rb"模式with open("pickle_demo","wb") as f: pickle.dump(alex,f)with open("pickle_demo","rb") as f: wangcai=pickle.load(f) print(wangcai.name) with open("pickle_demo","rb") as f: while True: # 不知道循环几次不能用for 用while try: print(pickle.load(f)) except EOFError: break import shelve # 不建议使用# 存值f=shelve.open("shelve_demo")f["key"]={"k1":(1,2,3),"k2":"v2"}f.close()# 取值f=shelve.open("shelve_demo")content=f["key"]f.close()print(content)
加密md5
sha1
# hashlib.md5()# hashlib.sha1()#md5是一个算法,32位的字符串 ,每个字符串是一个十六进制# sha1也是一个算法,40位的字符串,每个字符都是一个十六进制# 算法相对复杂 计算速度也慢md5_obj=hashlib.md5()md5_obj.update(s.encode("utf-8"))res=md5_obj.hexdigest()print(res,len(res),type(res))# 数据库 撞库# 加盐md5_obj=hashlib.md5("加盐".encode("utf-8"))md5_obj.update(s.encode("utf-8"))# 动态加盐username=input("username:")passwd=input("passwd")md5obj=hashlib.md5(username.encode("utf-8"))md5obj.update(passwd.encode("utf-8"))print(md5obj.hexdigest())
configparser
模块
logging
模块
功能
日志格式的规范操作的简化日志的分级管理logging 模块的使用
logging.basicConfig(level=logging.DEBUG) #级别logging.debug("debug message") #调试模式logging.info("info message") # 基础信息logging.warning("warning message")# 警告logging.error("error message") # 错误logging.critical("critical message") # 严重错误basicConfig不能将一个log信息既能输出到屏幕上有输出到文件上# logger 对象的形式来操作日志文件# 创建一个logger对象logger=logging.getLogger()# 创建一个文件管理操作符fh=logging.FileHandler()# 创建一个屏幕管理操作符sh=logging.StreamHandler()# 创建一个日志输出的格式format1=logging.Formatter("%(asctime)s-%(name)s-%(lecelname))# 文件管理操作符 绑定一个格式sh.setFormatter(format1)# 屏幕管理操作符 绑定一个格式# logger对象 绑定 文件管理操作符# logger对象 绑定 屏幕管理操作符
网络编程
由于不同机器上的程序要通信,才产生了网络
server 服务端
client 客户端
b/s 架构 ----> 统一入口 (解耦分支)
b/s 和c/s 架构的关系
b/s架构师c/s架构的一种网关的概念
局域网中的机器想要访问局域网外的机器,需要通过网关端口 找到的程序在计算机上,没一个需要网络通信的程序,都会开一个端口在同一时间只会有一个程序占用一个端口不可能在同一时间有两个程序占用同一个端口端口的范围0-65545,一般情况下8000之后的端口ip 确定唯一一台机器端口--- 确定唯一的一个程序ip+端口 找到唯一的一台机器上的唯一的一个程序tcp协议和udp协议
这个全双工的通信将占用两个计算机之间的通信线路,直到它被一方或双方关闭为止
arp地址 通过ip找mac
ip协议属于网络osi 七层协议中的哪一层,网络层
tcp协议 udp协议属于传输层
arp 协议 属于数据链路层
黏包问题 不知道客户端发送的数据的长度
大文件的传输一定要按照字节读,每一次读固定的字节
> 实现一个大文件的上传或者下载---
server端import jsonimport socketimport structsk=socket.socket()sk.bind(("127.0.0.1",8090))sk.listen()buffer=1024conn,addr=sk.accept()# 接受head_len=conn.recv(4)head_len=struct.unpack("i",head_len)[0]json_head=conn.recv(head_len).decode("utf-8")head=json.loads(json_head)filesize=head["filesize"]with open(head["filename"],"wb") as f: while filesize: if filesize>=buffer: content=conn.recv(buffer) f.write(content) filesize-=buffer else: content=conn.recv(filesize) f.write(content) filesize=0 breakconn.close()sk.close()
client端import jsonimport socketimport osimport structbuffer = 1024sk = socket.socket()sk.connect(("127.0.0.1", 8090))head = {# 发送文件 "filepath": r"文件路径", "filename": r"文件名", "filesize": None}file_path = os.path.join(head["filepath"], head["filename"])filesize = os.path.getsize(file_path)head["filesize"] = filesizejson_head = json.dumps(head) # 字典转成字符串bytes_head = json_head.encode("utf-8") # 字符串转成bytesprint(json_head)print(bytes_head)head_len = len(bytes_head)# 计算head长度pack_len = struct.pack("i", head_len)sk.send(pack_len) # 先发报头的长度sk.send(bytes_head)with open(file_path, "rb") as f: while filesize: if filesize > buffer: content = f.read(buffer) # 每次读出来的内鹅绒 sk.send(content) filesize -= buffer else: content = f.read(filesize) f.read(content) break
# 解决黏包问题 # 为什么会会出现黏包现象 # 首先 只有在TCP协议中才会出现黏包现象 # 是因为TCP协议是面向流的协议 # 在发送的数据传输的过程中还有缓存机制避免数据丢失 # 因此在连续发送小数据的时候,以及接受大小不符的时候都容易出现黏包现象 # 本质还是因为我们在接受数据的时候不知道发送的数据的长短# 解决黏包问题 # 在传输大量数据之前先告诉接受端要发送的数据大小 # 如果想更漂亮的解决问题,可以通过struct模块来定制协议# struct 模块 # pack unpack # 模式: "i" # pack之后的长度: 4个字节 #unpack之后拿到的数据是一个元组:元组的第一个元素才是pack的值
```
相关产品
-
日本天皇和皇后在4月15日,也就是最初检测到震度7的前震之后的第2天,就通过侍卫长向熊本县知事传达了对遇难者的追悼以及对受灾人员的慰问。本月又取消了之前的静养计划,希望能够尽快抵达灾区。但是考虑到当地自治体可能忙于处理余震状况以及避难居民,天皇夫妇在视察日期的选择上还将慎重考虑。(实习编译:王惠 审稿:王欢)
-
据韩联社报道,首尔时间3日7时50分,朝鲜从西南部的黄海南道殷栗一带向朝鲜半岛东部海域发射了两枚中程“芦洞”弹道导弹。
-
不难看出,习近平讲“绣花”,实际上说的是精准施策的工作标准和科学态度,这与他反复告诫的不能“遍撒胡椒面儿”“手榴弹炸跳蚤”一脉相承。
-
“特宏兴368号”渔船今年1月从宜兰南方澳出港,7月16日起与岸上的船主庄清旺失联,当时渔船在东太平洋海域的法属波利尼西亚附近。
-
4儿童 如果孩子的脚不是很凉,就没必要泡脚。人体足弓在儿童时期逐渐形成,此时如果经常用热水泡脚,可能会导致孩子足底的韧带变得松弛,不利于足弓的形成和维持,长此以往,会增加形成扁平足的风险。
-
三是优化服务管理,开辟“绿色通道”。人才签证实施细则将采用“互联网+政务服务”模式,实现外专、外交、公安之间信息互联互通互认,减少“跑路”环节;压缩审核、签发时限,对高端人才办理签证、工作许可、工作居留给予一定礼遇,不断提高管理服务效率。(完)
-
Jeff Gibb特别强调,上述数据只是从6月2日到8月4日两个月里的。在8月初科比访问中国期间,用户在微博上的讨论量出现明显的高峰。他认为,作为一个社交媒体平台,微博在实时营销和事件营销中的价值非常明显,巨大的传播声量足以让受众对某个事件留下深刻的印象。
-
张勇先现担任中国人民大学澳大利亚研究中心主任。这家开设于1999年的研究中心是中国高校关于澳大利亚研究方面开设最早、影响最大的机构。张勇先表示,这几年类似的澳研中心在中国其他一些知名高校渐渐设立起来,这也从一个侧面反映澳大利亚对中国越来越重要。
热点资讯
- [터리픽12]연장끝아쉬운패배.유재학감독과쇼터가말하는터리픽122019-06-24
- 中国北疆蔬菜大省春夏菜播种面积358.4万亩2019-06-24
- 中国财团收购IDG再起波澜泛海被指拖欠1200万美元中介费2019-06-24
- 宁波证券期货市场统计信息(2018年11月)2019-06-24
- 《辛普森一家》真人版3D画像:画面惊悚风格另类2019-06-24
- python新手总结(二)2019-11-05
- 都市白领消费图鉴2019-06-24
- 谷歌PixelSlate笔记本跑分现身:搭载i7-8500Y,或双系统2019-06-24