实训笔记

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


本地文件读写

例如:随着人工智能的不断发展,Python学习这门技术也越来越重要,很多人都开启了学习Python,本文就介绍了Python的基础内容。

提示:以下是本篇文章正文内容,下面案例可供参考

1.读纯文本文件

1.相对路径 同级 ./ 父级../ 2.绝对路径 E:\spiderProject\L01本地文件读写\english.txt #encoding模式 windows下默认是gbk
file = open('./chinese.txt',mode='r',encoding='utf-8')   
content = file.read()
print(content)
file.close()

2.文本编码历史

  1. 上世纪电脑刚刚产生

    内存、硬盘非常贵。
    最小信息单位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]

  2. List item

    上世纪末电脑开始传入其他国家

    欧洲,亚洲,中国大陆,中国台湾,日本,韩国。
    ASCII编码无法表示中文
    用2个字节,2的16次方,65535种可能。
    ‘一’ → 00000000 00000001
    ‘中’ → 00000010 00000101
    编码常用的2w多种汉字,
    中国大陆发明编码方式[gbk2312] 更新繁体生僻[gbk12302] ,统称[gbk]。
    中国台湾 big5,
    ‘我’ → 00000010 00000101
    日本韩国有自己的编码方式
    问题是,每个国家自己一套编码,同样的二进制排列,不同的解码方式得到不同的信息

  3. 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. 场景:1.字符串方式传播图片。2.简单加密3.服务器兼容型base64编码作用的是字节。
  2. '中’00000001 00000001
  3. 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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值