首页 > 代码库 > 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开发基础:字符编码&文件操作