提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
本地文件读写
例如:随着人工智能的不断发展,Python学习这门技术也越来越重要,很多人都开启了学习Python,本文就介绍了Python的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考
1.读纯文本文件
1.相对路径 同级 ./ 父级../ 2.绝对路径 E:\spiderProject\L01本地文件读写\english.txt #encoding模式 windows下默认是gbkfile = open('./chinese.txt',mode='r',encoding='utf-8')
content = file.read()
print(content)
file.close()
2.文本编码历史
-
上世纪电脑刚刚产生
内存、硬盘非常贵。
最小信息单位1字节8bit位二进制 1Byte = 01010101
1000byte = 1Kb 1000kb =1Mb 1000Mb = 1Gb Tb Pb
‘a’ → 00000001
‘b’ → 00000010
‘c’ → 00000011
1byte 8位,2的8次方,256种可能
把 a-z,A-Z,±*()%$#,把一百多种常见的英文字母字符编进去,发明了编码方式[ASCII] -
List item
上世纪末电脑开始传入其他国家
欧洲,亚洲,中国大陆,中国台湾,日本,韩国。
ASCII编码无法表示中文
用2个字节,2的16次方,65535种可能。
‘一’ → 00000000 00000001
‘中’ → 00000010 00000101
编码常用的2w多种汉字,
中国大陆发明编码方式[gbk2312] 更新繁体生僻[gbk12302] ,统称[gbk]。
中国台湾 big5,
‘我’ → 00000010 00000101
日本韩国有自己的编码方式
问题是,每个国家自己一套编码,同样的二进制排列,不同的解码方式得到不同的信息 -
List item
现代为了改变上述问题,出现一个协会(类似IEEE、ISO、联合国),把各国代表集中开会。
出现了一套大统一的编码:[UNICODE]
用4个字节,2的32次方得到一个非常大的数字,多种可能性,所有国家语言,万国码
00000000 03000000 00000000 00000001
统一问题解决,但小代价,占用磁盘多,纯英文信息比ASCII花费4倍空间
但unicode向下兼容ASCII,利用算法可以省略不必要的字符,最终一个字符1-4字节目前最流行的是[utf-8],utf-8是unicode编码的一种具体存储实现方式。
目前都建议使用utf-8。
3.写纯文本文件
代码如下(示例):
file = open('./3test.txt',mode='w',encoding='utf-8')
file.write('hello wrold \n 你好 世界')
file.write('今天天气不错')
#file.writelines(['hello','wrold'])
file.close()
该处使用的url网络请求的数据。
4.with语句
文件操作和其他某些操作,共性,开始前操作,主要逻辑。收尾工作 with语句把开始前准备和收尾工作抽离自动完成,程序员把主要精力放在逻辑上。with open('./chinese.txt',mode='r',encoding='utf-8') as f:
content = f.read()
print(content)
5.读非纯文本文件
图片、视频、word文档是windows上有相应解码功能的软件才能预览 python作为后端语言,控制台,无法直接看到图片长什么,但可以看到二进制排列with open('./1.jpg',mode='r+b') as f:
content = f.read()
print(content)
6.写非纯文本文件
img_content_bytes = b'\xff\xd8\.......'#自行补充
with open('./2.jpg',mode='w+b')as f:
f.write(img_content_bytes)
7.base64编码
- 场景:1.字符串方式传播图片。2.简单加密3.服务器兼容型base64编码作用的是字节。
- '中’00000001 00000001
- base64 80000000 , 0001 0000,00008881︰把真实信息一个字节取6位前面补8,得到几个新的字节。比原始信息大三分之base64之后每个字节,2的6次方64种可能,对应最简单a-z A-Z -+0-9
import base64
str1 = '13733177926'
content_b64_bytes = base64.b64encode(str1.encode(encoding='utf-8'))
print(content_b64_bytes)
content_b64_str = content_b64_bytes.decode(encoding='ascii')
print('我的绿色软件是:', content_b64_str)
with open('./1.jpg', mode='rb') as f:
content_bytes = f.read()
content_b64_bytes = base64.b64encode(content_bytes)
content_b64_str = content_b64_bytes.decode(encoding='ascii')
print(content_b64_str)
8.base64解码
整体过程:文本/图片编码->真正二进制 ->base64改变后的二进制 -> ascii解码成基本字符 ,逆转过来
import base64
str1 = 'MTM3MjUxMDc5NjQ='
str2 = 'T3JpZHp1cnU='
b64_bytes = str1.encode(encoding='ascii')
print(b64_bytes)
raw_bytes = base64.b64decode(b64_bytes)
raw_str = raw_bytes.decode(encoding='utf-8')
print(raw_str)