首页 > 代码库 > python开发基础:字符编码&文件操作
python开发基础:字符编码&文件操作
一,字符编码
1 以什么编码存的就要以什么编码取出
ps:内存固定使用unicode编码,
我们可以控制的编码是往硬盘存放或者基于网络传输选择编码
2 数据是最先产生于内存中,是unicode格式,要想传输需要转成bytes格式
#unicode----->encode(utf-8)------>bytes
拿到bytes,就可以往文件内存放或者基于网络传输
#bytes------>decode(gbk)------->unicode
3 python3中字符串被识别成unicode
python3中的字符串encode得到bytes
4 了解
python2中的字符串就bytes
python2中在字符串前加u,就是unicode
第一阶段
打开python解释器,notepad++,pychar 加载到内存
第二阶段
写一个文件就是
内存-endoce-bytes(二进制)
显示文件就是
硬盘-decode-unicode(万国码)
第三阶段
执行阶段,针对的是内部定义新的内存空间,例如变量
数据是最先产生于内存中,是unicode格式,要想传输需要转成bytes格式
#unicode----->encode(utf-8)------>bytes
拿到bytes,就可以往文件内存放或者基于网络传输
#bytes------>decode(gbk)------->unicode
二,文件操作
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 4 # f=open(r‘aaaa.py‘,encoding=‘utf-8‘) #x=1 5 # print(‘+++++>1‘,f.read()) 6 # print(type(data)) 7 # print(‘+++++>2‘,f.read()) 8 # print(‘+++++>3‘,f.read()) 9 # f.close() 10 # print(f) 11 # f.read() 12 # # del f 13 14 #open: 15 #1 会向操作系统发起系统调用,操作会打开一个文件 16 #2 在python程序中会产生一个值指向操作系统打开的那个文件,我们可以把该值赋值一个变量 17 18 #回收资源 19 #1 f.close():一定要做,关闭操作系统打开的文件,即回收操作系统的资源 20 #2 del f:没必要做,因为在python程序运行完毕后,会自动清理与该程序有关的所有内存空间 21 22 #文本文件:只读模式,文件不存在报错 23 # f=open(r‘字符编码总结‘,‘r‘,encoding=‘utf-8‘) 24 # print(f.read()) 25 # print(f.readline(),end=‘‘) 26 # print(f.readlines()) 27 # print(f.readable()) 28 # print(f.writable()) #False 29 # f.close() 30 31 # f=open(r‘111‘,‘r+‘,encoding=‘utf-8‘) #读写的模式,因为r+的写致使光标最末尾 32 # print(f.read()) 33 # # print(f.tell()) 34 # # print(f.tell()) 35 # print(f.write(‘1‘)) 36 # # print(f.tell()) 37 # print(f.read()) 38 # f.close() 39 40 #文本文件:只写模式,文件不存在则创建空文件,文件存在则清空 41 # f=open(‘new.txt‘,‘w‘,encoding=‘utf-8‘) 42 # f.write(‘1111111\n‘) 43 # f.writelines([‘22222\n‘,‘3333\n‘,‘444444\n‘]) 44 # # print(f.writable()) 45 # f.close() 46 47 # f=open(‘111‘,‘w+‘,encoding=‘utf-8‘) #创建文件,读写 注意光标位置,写入文件后读取的时候光标在开头 48 # print(f.readable()) 49 # f.write(‘hello word‘) 50 # print(f.seek(0)) 51 # print(f.read()) 52 # f.close() 53 54 55 #文本文件:只追加写模式,文件不存在则创建,文件存在会在末尾追加 56 # f=open(‘new_2‘,‘a‘,encoding=‘utf-8‘) 57 # print(f.readable()) 58 # print(f.writable()) 59 # f.write(‘33333\n‘) 60 # f.write(‘44444\n‘) 61 # f.writelines([‘5555\n‘,‘6666\n‘]) 62 # f.close() 63 64 # f=open(r‘111‘,‘a+‘,encoding=‘utf-8‘) #追加,读写权限,注意光标,因为a的关系,上来默认光标在末尾 65 # f.seek(0) 66 # print(f.tell()) 67 # # print(f.read()) 68 # print(f.write(‘heihei‘)) 69 # f.seek(0) 70 # print(f.tell()) 71 # print(f.read()) 72 # f.close() 73 74 75 76 77 #rb 78 # f=open(‘字符编码总结‘,‘rb‘) 79 # print(f.read().decode(‘utf-8‘)) 80 # f=open(‘1.jpg‘,‘rb‘) 81 # data=http://www.mamicode.com/f.read() 82 83 #wb 84 # f=open(‘2.jpg‘,‘wb‘) 85 # f.write(data) 86 # f=open(‘new_3.txt‘,‘wb‘) 87 # f.write(‘aaaaa\n‘.encode(‘utf-8‘)) 88 89 #ab 90 # f=open(‘new_3.txt‘,‘ab‘) 91 # f.write(‘aaaaa\n‘.encode(‘utf-8‘)) 92 93 94 #上下文管理 95 # with open(‘aaaa.py‘,‘r‘,encoding=‘utf-8‘) as read_f,\ 96 # open(‘aaaa_new.py‘,‘w‘,encoding=‘utf-8‘) as write_f: 97 # data=http://www.mamicode.com/read_f.read() 98 # write_f.write(data) 99 100 101 #循环取文件每一行内容 102 # with open(‘a.txt‘,‘r‘,encoding=‘utf-8‘) as f: 103 # while True: 104 # line=f.readline() 105 # if not line:break 106 # print(line,end=‘‘) 107 108 # lines=f.readlines() #只适用于小文件 109 # print(lines) 110 111 # data=http://www.mamicode.com/f.read() 112 # print(type(data)) 113 114 # for line in f: #推荐使用 115 # print(line,end=‘‘) 116 117 118 #文件的修改 119 #方式一:只适用于小文件 120 # import os 121 # with open(‘a.txt‘,‘r‘,encoding=‘utf-8‘) as read_f,\ 122 # open(‘a.txt.swap‘,‘w‘,encoding=‘utf-8‘) as write_f: 123 # data=http://www.mamicode.com/read_f.read() 124 # write_f.write(data.replace(‘alex_SB‘,‘alex_BSB‘)) 125 # 126 # os.remove(‘a.txt‘) 127 # os.rename(‘a.txt.swap‘,‘a.txt‘) 128 129 130 #方式二: 131 # import os 132 # with open(‘a.txt‘,‘r‘,encoding=‘utf-8‘) as read_f,\ 133 # open(‘a.txt.swap‘,‘w‘,encoding=‘utf-8‘) as write_f: 134 # for line in read_f: 135 # write_f.write(line.replace(‘alex_BSB‘,‘BB_alex_SB‘)) 136 # 137 # os.remove(‘a.txt‘) 138 # os.rename(‘a.txt.swap‘,‘a.txt‘) 139 140 #print(f.read(5))#读五个字符 141 #print(f.tell())#告诉你文件句柄的指针打印出来 按字符个数计数 142 #f.seek(0)#回到光标的开始位置 0可以是其他前面的会被删除显示 143 #print(f.readline()) 144 #print(f.encoding)#打印文件编码 145 #print(f.fileno()) #返回一个编号,一个接口,调用操作系统文件的IO 146 #print(f.name)#打印文件名字 147 #print(f.isatty())#终端 tty 148 #print(f.readable())#判断文件是否可读 149 #print(f.writable())#判断文件是否可写 150 #print(f.flush())#刷为了解决文件存在内存然后恶意关闭,其实他是有个内存值,当达到了这个值会直接写到硬盘里面
python开发基础:字符编码&文件操作
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。