python 文件基本操作-1
python文件基本操作-1
- 1 每日速记
- 2 字符编码
- 2.1字符编码的介绍
- 2.2 字符编码的发展史
- 2.3 字符编码的实际应用
- 2.3 编码与解码
- 3 python文件模式
- 3.1文件操作
- 3.2 读模式(r)
- 3.3 写模式(w)
- 3.4 追加模式(a)
- 3.5 文本模式(t)
- 3.6 二进制模式(b)
- 3.7扩展:
1 每日速记
allotment: n.分配;份额;<英>划分的土地
2 字符编码
2.1字符编码的介绍
字符编码只跟文本文件有关。
字符编码表:内部存储了计算机二进制数字与人类字符对应关系的表。
2.2 字符编码的发展史
一家独大:
ASCII码:记录了英文字母与数字的对应关系。通常用一字节(8bit,共可表示127个字符)来表示单个字符。
常见ASICII码:A-Z 65-90 a-z 97-112
:《汉字内码扩展规范》,记录汉字与计算机数字的对应关系。
双字节编码,范围为:8140-FEFE
shift_JIS码(日本): 一个日本电脑系统常用的编码表。它能容纳全角及半角拉丁字母、平假名、片假名、符号及日语汉字。
Euc_kr码(韩国):用来储存韩国KSX1001字集(旧称KSC5601)的字符
天下一统
unicode(万国码):是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。
utf8(转换版本有多种,功能都是为了优化万国码的存储):UTF-8的特点是对不同范围的字符使用不同长度的编码。对于0x00-0x7F之间的字符,UTF-8编码与ASCII编码完全相同。UTF-8编码的最大长度是4个字节。
2.3 字符编码的实际应用
字符不乱码:只要保证源文本文件是用什么编码方案编码的,就用对应的编码方案解码。
python解释器的编码方案的差异:
python 2.x 默认使用ASCII码,因此在编译字符串时,需做如下操作: 1.增加文件头
2.字符串前+‘u’
# coding:utf8
# python 2.X
# s = u'你'
s1 = u'haha'
#print(s)
# '''
# File "D:/py20/day09 ��ϰ/��ϰ����ͬ�汾���뷽ʽ����.py", line 2
# SyntaxError: Non-ASCII character '\xe4'
# '''
print(s1)
2.3 编码与解码
编码(encode):人类的字符>>>计算机二进制
解码(decode):计算机二进制>>>人类的字符
字符串.encode(编码)
s = '哈哈'
print(s.encode('GBK')) # b'\xb9\xfe\xb9\xfe'
bytes.decode(解码)
s1 = b'\xb9\xfe\xb9\xfe'
print(s1.decode('GBK')) # 哈哈
3 python文件模式
3.1文件操作
取消转义
# 取消转义
# 很多英文字符与斜杠组合到一起会产生特殊含义,解决方式在字符串前加字母r
print('haha\n哈哈')
'''
haha
哈哈
'''
print(r'haha\n哈哈') # haha\n哈哈
with 上下文
- open与close使用
f = open(文件路径,读写模式,编码)
f.close()
res = open(r'a.txt', 'r', encoding='utf8')
print(res) # 产生文件句柄,<_io.TextIOWrapper name='a.txt' mode='r' encoding='utf8'>
print(res.read()) # 读取文件
res.close() # 关闭文件,释放资源
'''
注释
open(文件路径,读写模式,字符编码)文件路径与读写模式是必须的字符编码是可选的(有些模式需要编码)
'''
- with语法会自动帮你关闭文件资源
with open(文件路径,读写模式,编码 as f:
pass
with open(r'haha.txt', 'r', encoding='utf8') as f:print(f.read())
3.2 读模式(r)
关键字:r
1.文件不存在:报错
with open(r'a.txt','r',encoding='utf8') as f:print(f.read()) # No such file or directory: 'a.txt'
2.文件存在,可通过关键字read获取文件信息,但只能读不能写
with open(r'haha.txt', 'r', encoding='utf8') as f:print(f.read())
'''
dadadad
dadada
文件存在,打印文件所有内容
'''
3.3 写模式(w)
关键字:w
1.文件存在,会先清空文件内容 ,再执行写入操作
with open('haha.txt', 'w', encoding='utf8') as f:f.write('haha')# print(f.read()) # io.UnsupportedOperation: not readable
'''
原文件内容:dadadaddadada
现文件内容:haha
'''
2.文件不存在,会创建新文件
with open('a.txt','w',encoding='utf8') as f:f.write('\n 你好,世界')
'''
文件不存在,创建文件
'''
3.4 追加模式(a)
1.文件存在,在文件光标尾部追加内容
with open('a.txt', 'a', encoding='utf8') as f:f.write('haha')
'''
原文件:你好,世界
新文件:你好,世界haha
'''
2.文件不存在,创建文件
'''
with open('b.txt','a',encoding='utf8') as f:f.write('你好呀,哈哈')
'''
创建新文件,内容为“你好呀,哈哈”
小总结:r,w,a模式只能操作文本文件
3.5 文本模式(t)
1.文本模式为默认模式:
r,w,a >>> rt wt at
2.该模式所有操作都是以字符串为基本单位(文本)
3.该模式必须指定encoding参数
4.该模式只能操作文本文件
3.6 二进制模式(b)
1.该模式可以操作任意类型文件
2.该模式所有操作都是以bytes类型(二进制)为基本单位
3.该模式不需要指定encoding参数
rb,wb,ab
3.7扩展:
文件操作方法扩展:
(1)读模式:
a. read()
with open(r'a.txt', 'r', encoding='utf8') as f:print(f.read()) # 一次性获取文件所有内容
b. readline()
with open(r'a.txt', 'r', encoding='utf8') as f:print(f.readline()) # 1. hahah 每次只读文件一行内容print(f.readline()) # 2. 哈哈
c. readlines()
with open(r'a.txt', 'r', encoding='utf8') as f:print(f.readlines()) # 1.读取文件的所有内容,并输出成列表,每个元素是文件每行的内容
d. readable()
with open(r'a.txt', 'r', encoding='utf8') as f:print(f.readable()) # True 判断当前文件是否可读
(2)写模式
a. write()
with open(r'a.txt', 'w', encoding='utf8') as f:f.write('克服一切困难,奥利给!!!') # 往文本文件写内容f.write(123) # 报错,TypeError: write() argument must be str, not int
b. writelines()
with open(r'a.txt', 'w', encoding='utf8') as f:f.writelines(['jason', 'kevin', 'tony'])可以将列表中多个字符串元素全部写入,jasonkevintony
c. writable() 判断文件是否有写的能力
with open(r'a.txt', 'w', encoding='utf8') as f:print(f.writable()) # Trueprint(f.readable()) # False
d. flush()
with open(r'a.txt', 'w', encoding='utf8') as f:f.flush() # 直接将内存的文件数据刷到硬盘,相当于ctrl+s
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
