python2读文件_2.2.1 python 文件处理 - 读文件

博客主要介绍Python2文件处理中读文件的相关内容,包括指定编码读文件、二进制模式读文件的示例及区别,还提及智能检测文件编码的方法,以及循环处理文件防止内存占满的操作,同时强调了文件操作时不同模式的特点和编码一致性的重要性。

文件处理分为 读、写、修改

读文件

PS: 此处的encoding必须和文件在保存时设置的编码一致,不然“断句”会不准确从而造成乱码。

示例1:指定编码读文件

f = open(file='D:/工作日常/兼职白领学生空姐模特护士联系方式.txt',mode='r',encoding='utf-8')

data = f.read()

f.close()

# file='D:/工作日常/兼职白领学生空姐模特护士联系方式.txt' 表示文件路径

# mode='r' 表示只读(可以修改为其他)

# encoding='utf-8' 表示将硬盘上的 0101010 按照utf-8的规则去“断句”,再将“断句”后的每一段0101010转换成unicode的 01010101,unicode对照表中有01010101和字符的对应关系。

#f.read() 表示读取所有内容,内容是已经转换完毕的字符串。

#f.close() 表示关闭文件

#PS: 此处的encoding必须和文件在保存时设置的编码一致,不然“断句”会不准确从而造成乱码。

示例2: 二进制模式读文件

f = open(file='D:/工作日常/兼职白领学生空姐模特护士联系方式.txt',mode='rb')

data = f.read()

f.close()

#file='D:/工作日常/兼职白领学生空姐模特护士联系方式.txt' 表示文件路径

#mode='rb' 表示只读(可以修改为其他)

#f.read() 表示读取所有内容,内容是硬盘上原来以某种编码保存的 010101010,即:某种编码格式的字节类型

#f.close() 表示关闭文件

问题:示例2和示例1的区别在哪?

答:在于示例2打开文件时并未指定encoding,这是为何?是因为直接以rb模式打开了文件 ,rb是指二进制模式,数据读到内存里直接是bytes格式,如果想内容,还需要手动decode,因此在文件打开阶段,不需要指定编码

问题:假如你不知道你要处理的文件是什么编码可怎么办呢?

智能检测编码 :

import chardet

f = open('log',mode='rb')

data = f.read()

f.close()

result = chardet.detect(open('log',mode='rb').read())

print(result)

#输出:

{'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'}

'''

chardet 模块 根据编码的特征、规律.

第三方模块,需要安装

'''

注意:

文件操作时,以 “r”或“rb” 模式打开,则只能读,无法写入;

硬盘上保存的文件都是某种编码的0101010,打开时需要注意:

rb,直接读取文件保存时原生的0101010,在Python中用字节类型表示

r和encoding,读取硬盘的0101010,并按照encoding指定的编码格式进行断句,再将“断句”后的每一段0101010转换成unicode的 010101010101,在Python中用字符串类型表示

循环文件

防止文件过大,占满内存。循环处理文件,边读边处理

f = open("兼职白领学生空姐模特护士联系方式.txt",'r',encoding="utf-8")

for line in f:

print(line)

f.close()

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值