字符编码与文件操作

内容概要

  • 字符编码
  • 文件操作

内容详细

1. 字符编码

什么是字符编码:
	由于计算机内部只识别二进制 但是用户在使用计算机的时候却可以看到各式各样的语言字符
	内部记录了人类字符与数字对应关系的数据
	只跟文本文件和字符串有关 与视频文件、图片文件等无关

2.字符编码的发展史

# 1.一家独大
	计算机最初是由美国人发明的 美国人为了能够让计算机识别英文字符 发明了
	ASCII码:内部记录了英文字符与数字的对应关系
	用字节来表示对应关系
'''
所有英文字符和符号加起来其实不超过127
之所以使用八位是为了后续发现新的语言
'''
必须记住的对应关系:
"""
A-Z:65-90
a-z:97-122
"""
# 2.群雄割据
为了让计算机能够识别中文 中国发明了:
	GBK码:记录了英文中文与数字的对应关系
          对于英文还是使用一个字节
          对应中文使用两个字节甚至更多字节
"""
两个字节其实也不够表示出所有的中文
遇到生僻字可能需要更多位来表示
"""
日本人
    	为了能够让计算机识别日文 也需要发明一套编码表
		shift_JIS码:记录了日文英文与数字的对应关系
韩国人
    	为了能够让计算机识别韩文 也需要发明一套编码表
		Euc_kr码:记录了韩文英文与数字的对应关系
# 3.天下一统
	为了能够实现不同国家之间的文本数据能够彼此无障碍交流需要对编码统一
  		unicode(万国码) 
        	统一使用两个及以上字符记录字符与数字的对应关系
	utf8(万国码的优化版本)
        	将英文还是用一个字节存储
		将中文使用三个字节或更多字节存储
'''现在默认使用的编码是utf8'''

3.字符编码实操

1.如何解决文件乱码的情况
	文件当初以什么编码编的 打开的时候就以什么编码解
2.python解释器版本不同带来的编码差异
	python2.X内部使用的编码默认是ASCII
		# 文件头
		coding:utf8
		# 在python2中定义字符串前面要加一个小u
		s = u'你'
	python3.X内部使用utf8 
3.编码与解码
	编码
		将人类能够读懂的字符安装指定的编码转换成数字
	解码
		将数字按照指定的编码转换成人类能够读懂的字符
例:
s = '每天不要想太多 学就完事了 干就完了 奥利给!!!'
	编码
	res = s.encode('utf8')
	print(res, type(res))

字符编码与文件操作

	解码
	res1 = res.decode('utf8')
	print(res1)

字符编码与文件操作

4.文件操作

1.什么是文件?
	文件其实是操作系统暴露给用户操作硬盘的快捷方式(接口)
2.代码如何操作文件
	关键词:open()
	三步走:
		# 利用关键词open打开文件
		# 利用其它方法操作文件
		# 关闭文件
"""
文件路径
	相对路径和绝对路径
	路径中出现了字母与斜杠的组合产生了特殊含义如何取消?
		在路径字符串前面加一个 r
			r'D:\py20\day08\a.txt'
"""

创建一个文件路径为:
	D:\py20\day08\a.txt
open('a.txt')
open(r'D:\py20\day08\a.txt')

字符编码与文件操作

res = open('a.txt', 'r', encoding='utf8')
print(res.read())
res.close() # 关闭文件释放资源
"""
open(文件路径,读写模式,字符编码)
    文件路径与读写模式是必须的
    字符编码是可选的(有些模式需要编码)
"""

with上下文管理(能够自动帮你close())
with open(r'a.txt','r',encoding='utf8') as f1:  # f1=open() f1.close()
	print(f1.read())
"""
代码操作文件 推荐使用with语法
"""

5.文件读写模式

"""
补全语法结构 没有实际含义
	pass
	...
"""
# r 只读模式(只能看不能改)
路径不存在:直接报错
with open(r'b.txt', 'r', encoding='utf8') as f:
	pass

路径存在
with open(r'a.txt', 'r', encoding='utf8') as f:
	 print(f.read())  # 读取文件内所有的内容
	f.write('123')  # 写文件内容

# w 只写模式(只能写不能看)
路径不存在自动创建
with open(r'b.txt', 'w', encoding='utf8') as f:
	pass

路径存在:1.会先清空文件内容  2.再执行写入操作
 with open(r'a.txt', 'w', encoding='utf8') as f:
		f.read()
		f.write('hello world!\n')
		f.write('hello world!\n')
		f.write('hello world!\n')

# a 只追加模式(追加内容)
上一篇:使用ueditor实现多图片上传案例——Dao层(IShoppingDao)


下一篇:常用的Linux指令总结(共57个)