第三章 python基础-字符编码 文件操作
1,计算机系统:
应用程序(应用软件)
操作系统
计算机硬件
cpu:具体运行程序的
内存:IO读写速度快,掉电数据消失
硬盘:读写速度慢,但是掉电数据不消失
2,文本编辑器读文件nodepad++
1 先启动nodepad++
2,将硬盘中的文件内容读入内存
3,打印到屏幕
3,运行一个Python 程序;python test.py
1,先启动python解释器
2,将test.py的内容读入内存
3,解释执行(此时才有python 语法的概念)
4,什么是字符编码?
人类字符与数字的对应表就是字符编码表
5,字符编码
ASCLL:只有英文还有键盘上所有的符号与数字的对应
每个英文字符对应8位 对应8bit也就是1bite,一个字节
GBK:中文,英文与数字的对应表
中文字符对应16位bit,也就是2bite,两个字节
英文字符还是8位,一个字节,1bite
unicode:万国编码
2bytes 代表一个字符,无论是英文还是中文
utf-8:
一个英文字符用的是1个字节
一个中文字符用的是2个字节
6,字符编码结论:
python3解释器默认的读取py文件的编码utf-8
python2解释器默认的读取py文件的编码ASCLL
可以通过修改文件头的方式,修改默认的字符编码
#coding:utf-8
x=u'上'###########存成unicode的格式,避免乱码的问题
在很多python2中会用这种格式
unicode--------编码encode---------->GBK 或者其他格式的编码
GBK 或者其他格式的编码------解码decode-----》unicode
文件处理
文件对象=open(文件的路径,mode=文件的打开方式,encoding=字符编码)
###强调:下述操作,设计两方面的资源
#1,操作系统需要打开文件(占用内存的资源)
#2,f就是一个python的变量(占用应用程序的资源)
方式一:这个结尾必须要有关闭close不然会占用资源,对文件操作结束之后要及时释放掉
# f=open(r'D:pythonstudyexeciseaaa.txt',mode='r',encoding='utf-8')
# date=f.read()
# print(date)
# f.close()
方式二:这种方式不需要先写开始再写关闭
with open(r'D:pythonstudyexeciseaaa.txt',mode='r',encoding='utf-8') as f:
date=f.read()
print(date)
文件的打开模式:
r :默认的打开模式,只读模式
文件存在,正常打开读,文件不存在,则报错
# with open('aaa.txt',mode='r',encoding='utf-8') as f:
# # print(f.readable())
# # # print(f.writedable())
# # # f.write('ihucaisuh')
# # print('第一次读')
# # print(f.read())
# # print('第二次读')
# # print(f.read())
# with open('aaa.txt',mode='r',encoding='utf-8') as f:
# print(f.readable())
# # print(f.writedable())
# # f.write('ihucaisuh')
# print('第一次读')
# print(f.readline())
# print('第二次读')
# print(f.readline())
# print('第三次读')
# print(f.readline())
# print('第四次读')
# print(f.readline())
换行符:在python中
换行符,统统用
w:只写模式,文件存在,则清空,文件不存在,则创建
# with open('ccc.txt', mode='w', encoding='utf-8') as f:
# print(f.readable())
# f.write('你好啊 孙志平
')
# f.write('你好啊 胡湘
')
# inf = ['egon', 'sasxas','sdcsdcs','ecdsccxsdc','scsdcds' ]
# f.write(inf[0]+'
')
# f.write(inf[1])
# print(f.writedable())
# f.write('ihucaisuh')
# with open('eee.txt', mode='w', encoding='utf-8') as f:
# inf = ['egon', 'sasxas', 'sdcsdcs', 'ecdsccxsdc', 'scsdcds']
# # for i in inf:
# # # f.write(i+'
')
# f.writelines(inf)
a模式:只追加写模式
文件不存在,则创建,
文件存在,则打开,指针自动移到文件末尾
# with open ('access.log',mode='a',encoding='utf-8') as f:
# print(f.readable())
# print(f.writable())
# f.write('777777
')
# f.write('888888
')
# f.write('999999
')
# inf=['1111','2222','3333','44444','5555','666']
# f.writelines(inf)
在 r w a 后面加一个+表示既可以读,又可以写
#控制文件读写单位的有两种模式:
1,t:默认的模式(text文本)
2,b:二进制模式,(bytes)该模式下不能指定encoding参数
该模式下读写都是bytes
如果要求跨平台性好,用b模式
总结:文件的操作方式有三种,r(read)只读模式,w(write)只写模式,a(append)追加模式
搭配的文件读写单位有两种模式:t(text)文本模式,b(bytes)二进制模式
3*2=6,一共有六种搭配组合
循环读取文件内容
with open ('access.log',mode='rt',encoding='utf-8') as f :
# date=f.read()
# print(date)
for line in f :
print(line)
修改文件内容:也有两种方式;
"""