Py学习记录
Python 常规学习
Python学习笔记(一)
Python学习笔记(二)
Python学习笔记(三)
Python学习笔记(四)
Python学习笔记(五)
Python学习笔记(六)
Python学习笔记(七)
Python习题(一)
Python习题(二)
Python习题(三)
Python习题(四)
Python习题(五)
Python常见Bug
Python编程环境
Python-依赖安装(三方库)
Python-VS Code
pip-换源
py 程序转 exe
Python-打开选择文件对话框
Python 项目
Python-密码学
Python-与佛伦禅
Python-喵语翻译
Python-翻译服务器
Python-邮件发送
Python-自动签到
Python-自动签到(Post请求)
Python-自动签到(模拟操作)
Python-图片添加二维码
Python-数据可视化
Python-端口扫描器
Python-未测试项目
Python-虚拟环境
Python-临时环境
Python-venv虚拟环境
Python-Conda
Python-OpenCV
OpenCV-人脸识别
Python-PyTorch
本文档使用 MrDoc 发布
-
+
首页
Python学习笔记(五)
## 计算机编码 ### 二进制  用来存放一个0或者1的位置,就是计算机中最小的储存单位,叫做【位】,外国名字叫【bit】,也叫做【比特】。我们规定8个比特构成一个【字节】(byte),字节是计算机里最常用的单位。  bit是位,byte是字节,1byte = 8bit  > 千兆宽带,其实说的是以比特每秒位单位,1000M就是 1000Mbit/s > 而我们下载速度是以字节每秒位单位显示的,1byte = 8bit > 那么:1000M bit = 125M byte > 也就是说千兆宽带,每秒下载速度最多125M。那我们的百兆宽带,下载速度也就只有十几兆了 ### 编码表 外国人使用的英语只有26个字母,再加上标点、数字和一些符号也不会太多,老外搞出来一个东西叫做ASCII码,这个比二进制高级了一些。 ASCII码组合出的256种状态,至此一个字节就使用满了。 我们汉字千千万万,我们科学家就重新编写了一张编码表,叫做GB2312(word中有这种编码方式),它使用2个字节16个比特位,来表示绝大多数(65535)个汉字。后来,为了显示更多的汉字,又研究出一套编码,GBK编码。 不同国家字体都不同,相对来说编码也都不一样 为了能够让全世界人民都能畅通的交流。Unicode应运而生。Unicode把所有语言都统一到一套编码里,可以容纳100多万个符号,这样就不会再有乱码问题了。 但是由于把所有语言都统一到一套编码里中,就造成Unicode码越来越庞大。比如英文A,之前可以用00010001表示,但是到了Unicode码中,必须使用00000000 00010001来表示。 于是,科学家们又针对Unicode码研究出了一种可变长度字符编码,叫做UTF-8(8-bit Unicode Transformation Format),它可以根据不同的符号来变化字节长度。  ### 编码encode()与解码decode() * 编码encode就是把人类语言转成计算机语言。 * 解码decode就是把计算机语言转成人类语言。  ``` print('开课吧'.encode('gbk')) print('开课吧'.encode('utf-8')) print(b'\xbf\xaa\xbf\xce\xb0\xc9'.decode('gbk')) print(b'\xe5\xbc\x80\xe8\xaf\xbe\xe5\x90\xa7'.decode('utf-8')) ```  这里的计算机语言有一个相同之处,就是最前面都有一个字母‘b’,这是代表它是bytes(字节)类型的数据。 ``` print(type('开课吧')) print(type(b'\xbf\xaa\xbf\xce\xb0\xc9')) print(type(b'\xe5\xbc\x80\xe8\xaf\xbe\xe5\x90\xa7')) ```  编码时用什么样的编码表,解码的时候就用什么样的编码表。 ## 文件读写 ### 读取文件  准备个txt文件,随便写入任何内容  1. 打开文件  > myfile是变量,存放读取的文件 > 第一个r是固定符号。 > 'test.txt'是需要读取文件的文件名,在这里, readfile.py文件与test.txt 文件需要放在同一文件夹内。 > 最后一个‘r’是文件打开模式,‘r’代表read, 意为文件读取。 > 现在已经打开了文件。 2. 读取内容 `myfilecontent = myfile.read()` 3. 打印内容 `print(myfilecontent)` 4. 关闭文件 `myfile.close()` ``` myfile = open(r'test.txt','r') myfilecontent = myfile.read() print(myfilecontent) myfile.close() ```  > 有时候本地创建的文件编码格式为UTF-8,而非GBK >  > ``` > myfile = open(r'test.txt','r',encoding='utf-8') > myfilecontent = myfile.read() > print(myfilecontent) > myfile.close() > ``` > 追加个 `encoding='utf-8'` 来说明文件格式 ### 写入文件  1. 打开文件 `myfile = open(r'test1.txt','w')` > 还是使用open()函数, 除了最后一个参数,其余参数不动, 把最后一个参数换成‘w’,是write意思,意为写入 > ‘w’ 是写入模式,会直接情况原内容重新写入,‘a’ 为追加模式 > 会写入和文件同路径的下的 test1.txt 文件 > 如果没有这个文件,会自动创建一个 2. 写入内容 `myfile.write('从你的全世界路过')` 3. 关闭文件 myfile.close()  在读写结束后忘关闭文件会占用资源,拖慢速度,容易忘,可以使用with…as方法 ``` with open(r'test.txt','a') as myfile: myfile.write('你好') ``` 读写之后会自动关闭文件 ## 模块的定义   模块是最高级别的程序组织单元,它将程序代码和数据封装起来以便重用。也就是模块可以封装任何数据、代码。  每一个后缀名为.py的文件都是模块。 模块作用就是将数据、代码封装起来,以便再使用。模块不仅仅我们自己使用,也可以把它给别人使用,就像传递文件一样那么简单。 ### 方式一:使用自己的模块 在main.py模块中引入mytest.py模块  ``` ## main.py import mytest #导入mytest模块 ## mytest.py #mytest模块 print("我是mytest模块") ```  #### import语句  通过使用模块,把赋值变量、定义函数、定义类放在mytest.py文件中,把使用变量、调用函数、实例化对象放在main.py文件中 ``` ## main.py import mytest #导入mytest模块 print(mytest.strtest) #打印mytest模块中变量strtest mytest.hello() #运行mytest模块中函数hello() shaonian = mytest.Test() #mytest模块中Test类的实例化 print(shaonian.strClass) #打印实例属性 shaonian.go() #调用实例方法go方法 ## mytest.py #mytest模块 strtest = '驭风少年' def hello(): intro = "你好,我是驭风少年函数" print("hello函数正在运行") class Test: strClass = "我是类,我是驭风少年" def go(self): print("类在运行") ```   还有 import…as… 的方式 ``` import mytest as ts print(ts.strtest) #打印mytest模块中变量strtest ts.hello() #运行mytest模块中函数hello() shaonian = ts.Test() #mytest模块中Test类的实例化 print(shaonian.strClass) #打印实例属性 shaonian.go() #调用实例方法go方法 ``` 可以使用import…as…语句,可以将mytest的名字变成ts,这样在后面需要使用mytest模块名的地方,就可以换成ts名字使用。 当我们需要导入多个模块时,我们可以使用逗号,将模块名隔开 import x,y,z 就是将X.py文件,Y.py文件,Z.py文件同时引入 #### from … import … 语句 from…import…语句可以将某一模块的部分代码导入到另一个模块中  ``` ## main.py文件 from mytest import hello from mytest import strtest hello() print(strtest) ## mytest.py文件 strtest = '驭风少年' def hello(): intro = "你好,我是驭风少年函数" print("hello函数正在运行") ```  将mytest.py文件中的变量与函数引导main.py中使用,这样使用时无需加入”模块名”前缀 ``` from mytest import hello from mytest import strtest 简写成: from mytest import hello,strtest ``` #### if __name__ == '__main__' Python与其他语言一样,程序都要有一个运行入口。当我们运行某个py文件时,就能启动整个程序。那么这个py文件就是程序的入口   当我们有很多py文件在一个程序中,但是你只能指定一个程序入口。这样你就需要使用if __name__ == '__main__':来指定某个py文件为程序入口。 ``` ## main.py import mytest #导入mytest模块 if __name__ == '__main__': print(mytest.strtest) # 打印mytest模块中变量strtest mytest.hello() # 运行mytest模块中函数hello() shaonian = mytest.Test() # mytest模块中Test类的实例化 print(shaonian.strClass) # 打印实例属性 shaonian.go() # 调用实例方法go方法 ## mytest.py #mytest模块 strtest = '驭风少年' def hello(): intro = "你好,我是驭风少年函数" print("hello函数正在运行") class Test: strClass = "我是类,我是驭风少年" def go(self): print("类在运行") ```  当把mytest.py导入到main.py文件中,在main.py中加入if __name__ == '__main__': 执行main.py, 程序正常执行 ``` ## first.py import main ## main.py import mytest #导入mytest模块 print("我是a模块") if __name__ == '__main__': print(mytest.strtest) # 打印mytest模块中变量strtest mytest.hello() # 运行mytest模块中函数hello() shaonian = mytest.Test() # mytest模块中Test类的实例化 print(shaonian.strClass) # 打印实例属性 shaonian.go() # 调用实例方法go方法 ## mytest.py #mytest模块 strtest = '驭风少年' def hello(): intro = "你好,我是驭风少年函数" print("hello函数正在运行") class Test: strClass = "我是类,我是驭风少年" def go(self): print("类在运行") ```  运行first.py代码,你会发现,只能输出”我是a模块” 这是因为,此时main.py文件已经不再是程序的入口。main.py文件导入到了first.py文件中,first.py文件运行的时候,只会执行main.py文件中本身代码,不会执行if __name__ == '__main__':后面的代码。  `if __name__ == '__main__':`下的程序只有再作为主程序才会执行,跟程序名称无关 ### 使用他人的模块 time模块 ``` import time print("hello") time.sleep(3) print("python") ```  random模块 ``` import random num = random.randint(1,30) # 随机从1-30之间抽取一个数字 print(num) ```  #### 探究他人模块  Python内置很多官方库,可以去官方查官方手册 [Python官方文档](https://docs.python.org/zh-cn/3/library/index.html) #### 自学模块 遇到新模块不懂的可用百度  把模块重点写成笔记 ``` import time; # 引入time模块 ticks = time.time() #时间戳 每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示。 print ("当前时间戳为:", ticks) localtime = time.localtime(time.time()) #本地时间 从返回浮点数的时间戳方式向时间元组转换,只要将浮点数传递给如localtime之类的函数。 print ("本地时间为 :", localtime) localtime = time.asctime( time.localtime(time.time()) ) #根据需求选取时间格式 print ("本地时间为 :", localtime) print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) )# 格式化成2016-03-20 11:45:39形式 print (time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()) )# 格式化成Sat Mar 28 22:24:24 2016形式 a = "Sat Mar 28 22:24:24 2016" print (time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y")))# 将格式字符串转换为时间戳 ```  #### 学习CSV模块 CSV是一种比较实用又简单的模块可以处理excel表格 我们先在excel中新建一个excel表格, 但是要选择”CSV”格式.  ##### 读取Excel 表格中填写相应数值  ``` import csv with open("mytest.csv",encoding='utf-8-sig') as r: print("内容如下\n") reader = csv.reader(r) #使用csv的reader()方法,创建一个reader对象 for content in reader: #遍历reader对象的每一行 print(content) print("读取完毕!") ```  打印出Excel中的数组 ##### 写入Excel ``` import csv #from kkb_tools import open_file#离线不需要 with open("mytest1.csv",'a') as r: writer = csv.writer(r) writer.writerow([41,42,43]) print("写入完毕!") #open_file("mytest1.csv")#离线不需要 ``` 
造物者W
2022年1月11日 12:19
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码