字符编码与文件处理


字符编码

一:什么是字符编码
人类的字符----》翻译-------》数字
翻译的过程必须遵循一个标准:字符与数字一一对应的关系
这个标准称之为字符编码表

1.ASCII
8bit=1bytes,一个英文字符占用1字节

2.GBK
16bit=2bytes ,2个字节表示一个中文字符,1字节表示一个英文字符

3.unicode(内存中固定的编码):
16bit=2bytes,2个字节表示一个字符

utf-8:Unicode Transformation Format
1字节表示一个英文字符,3bytes表示一个中文字符

重要:保证不乱吗的核心就是:
文件是以什么编码存的,就必须以该编码读取
强调:我们能控制的只是存到硬盘上的编码

了解:
python3解释器:默认utf-8编码
python2解释器:默认ascii编码

文件头的作用:#coding:utf-8 是告诉python解释器,使用指定的字符编码

二:编码转换:
unicode---编码encode--->gbk
gbk------->解码decode---》unicode

文件处理-1

一、打开文件
f=open(r'文件的路径',mode='打开文件的模式',encoding='操作文件的字符编码')
f=open(r'a.txt',mode='r')

二、读/写
data=f.read()
print(data)

三、关闭文件
f.close() #回收操作系统的资源。在每次打开文件后一定要关闭,否则打开的文件会占用操作系统资源。

四、开关文件的另一种方法,可以不用手工关闭文件。
with open(r'a.txt',mode='r') as f:
print('===>')
print(f.read())

with open(r'a1.txt',mode='r') as f1,open('a2.txt',mode='r') as f2:
print('===>')
print(f1.read())
print(f2.read())
五、打开文件的字符编码:
默认的打开文件的编码是:当前操作系统默认的编码,win:gbk,linux:utf-8,mac:utf-8
f=open('a.txt',mode='r',encoding='utf-8') # encoding='utf-8'就是指定打开文件的字符编码
print(f.read())

六、文件处理的基本形式
文件默认的打开模式是t模式:文本模式

操作文件的模式有三种:r,w,a

1. r:默认的打开模式,只读模式
注意:当文件不存在时,报错
f=open('a.txt',mode='r',encoding='utf-8') #mode='rt'
f.write('123213213123 ') #抛出异常,不能写
print(f.readable())
print('=============>1')
print(f.read())

f.close()

f=open('a.txt',mode='r',encoding='utf-8') #mode='rt'
print(f.readline(),end='') # .readline()命令是表示一行一行的读取
print(f.readline(),end='')
print(f.readline(),end='')
f.close()


f=open('a.txt',mode='r',encoding='utf-8') #mode='rt'
print(f.readlines()) # .readlines()命令是将读取的文件内容以换行符为界限存入列表内
f.close()
文件循环读取:
1.
with open('a.txt',encoding='utf-8') as f:
for line in f:
print(line)
2.
for line in f.readlines(): #循环文件不要使用该方式,因为在文件过大的情况下f.readlines()建立的列表有可能会撑爆内存
print(line,end='')

2. w:只写模式
注意
1、当文件存在时,清空
2、当文件不存在时,创建空文档

f=open(r'a1.txt',mode='w',encoding='utf-8') #默认是wt
f.write('第一行 ')
f.write('第二行 ')

f.writelines(['111111 ','222222 ','333333 '])
f.write('aaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbb ccccccccccccccc ')

f.close()

注:每一次写入都会清空所有内容

3. a:只追加写模式
注意:
在文件不存在时,创建空文件
在文件存在时,光标直接跑到文件末尾添加内容

f=open('access.log',mode='a',encoding='utf-8')
print(f.writable())
f.write('aaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbb ccccccccccccccc ')
f.readlines() #报错

f.close()



原文地址:https://www.cnblogs.com/zhaodafa/p/8625323.html