encode 编码
decode 解码
declared 声明
1.二进制
----->ASCII :只能存英文和拉丁字符。一个字符占一个字节,8位
-------->gb2312:只能6700多个中文,1980
----------->gbk1.0:存了2万多字符,1995
-------------->gb18030:2000年,27123中文
万国码(向下兼容其它码表)
--------->unicode: utf-32:一个字符占4个字节
--------->unicode: utf-16:一个字符占2个字节或两个以上,65535个字符
--------->unicode: utf-8:一个英文用ASCII码来存,一个中文占3个字节
2.in python2(里面内存默认utf-16)
默认 ASCII码表
时用: -*- coding:utf-8 -*-
(注意输出窗口的编码表是否和使用的编码表一致)
3.转码python2
#-*- coding:utf-8 -*-
#author: wylkjj
#date:2018/12/19
#python2里运行
s = "特斯拉"
s_to_unicode = s.decode("utf-8")
unicode_to_gbk = s_to_unicode.encode("gbk")
print(s)
print(s_to_unicode)
print(unicode_to_gbk)
4.in python3
默认 是unicode
encode 在编码的同时,会把数据转成bytes类型
decode 在解码的同时,会把bytes类型转成字符串
b = byte = 字节类型 = [0-255]之间的纯数字的字节类型
5.文件操作(由于python是用c语言写的,所以存储字符时有指针的移动)
#author: wylkjj
#date:2018/12/19
#对文件进行读操作
data = open('小重山', 'r', encoding='utf-8').read()#对文件进行读操作
print(data)
f = open('小重山', 'r', encoding='utf-8')
data = f.read()
print(data)
f.close()
(1)读:read全文
f = open('小重山', 'r', encoding='utf-8')
#data = f.read()
datas = f.read(5)#读五个字节
#print(data)
print(datas)
f.close()
(2)写:write类似重新写一个文档
f = open('小重山2', 'w', encoding='utf-8')#只进行读操作,没有文件创建文件
f.write("hello word\n")#注:空格
f.write("alex")
f.close()
(3)写:append接着文件里面内容进行写操作
f = open('小重山', 'a', encoding='utf-8')
f.write("\nhello word \n")
f.write("alex \n")
f.close()
(4)读:取行
f = open('小重山', 'r', encoding='utf-8')
# print(f.read(5))
# print(f.read(5))
print(f.readline())
print(f.readline())
(6)读取:第六行
number = 0
for i in f.readlines():
#print(i)#除字符串自带一个换行符外print还自带一个换行符所以会出项两个换行
#print(i.strip())#清除多余换行符
number += 1
if number == 6:
print(i.strip())
f.close()
(7)在行元素中加内容
f = open('小重山', 'r', encoding='utf-8')
data = f.readlines()
number = 0
for i in data:#for内部将for对象做成一个迭代器
#print(i)#除字符串自带一个换行符外print还自带一个换行符所以会出项两个换行
#print(i.strip())#清除多余换行符
number += 1
if number == 6:
#i=i.strip()+'oooo'#字符串拼接尽量不要用+,用join
i=''.join((i.strip(),'iiii'))
print(i.strip())
f.close()
最好用下面的这种方法:
f = open('小重山', 'r', encoding='utf-8')
data = f.readlines()
number = 0
for i in data:
number += 1
if number == 6:
i = ''.join((i.strip(), 'iiii'))
print(i.strip())
f.close()
(8)调整光标位置
f = open('小重山', 'r', encoding='utf-8')
print(f.tell())
print(f.read(2))#英文就占一个,中文就占三个
print(f.tell())
f.seek(0)#调整光标起始位置
print(f.tell())
print(f.read(4))
f.close()
(9)占位
f = open('小重山', 'r', encoding='utf-8')
print(f.tell())
print(f.read(2))#英文就占一个,中文就占三个
print(f.tell())
f.seek(0)#调整光标起始位置
print(f.tell())
print(f.read(4))
f.close()
6.缓冲设置原理:
import sys,time
for i in range(30):
sys.stdout.write("*")#没有时间设置时先存进缓冲区,然后一次性输出。
sys.stdout.flush()#缓冲进程,进度条原理,直接调用方法
time.sleep(0.2)#每0.2秒输出
import sys,time
for i in range(30):
print("*",end=" ",flush=True)#用的函数
time.sleep(0.2)
f = open('小重山', 'r', encoding='utf-8')
print(f.isatty())#判断文件是否是终端
#f.truncate()
f.close()
7.模式
(1)r+读写模式(光标在起始位置)
f = open('小重山', 'r+', encoding='utf-8')
print(f.readline())
f.write('岳飞')#默认写在最后一层
f.close()
(2)w+写读模式
f = open('小重山2', 'w+', encoding='utf-8')#先清空再读,再写
f.write('岳飞')
print(f.tell())
f.seek(0)
print(f.readline())
f.close()
(3)a+追加读模式(光标在最后位置)
f = open('小重山2', 'w+', encoding='utf-8')#先清空再读,再写
f.write('岳飞')
print(f.tell())
f.seek(0)
print(f.readline())
f.close()
(4)终极问题
f = open('小重山', 'r+', encoding='utf-8')
number = 0
for line in f:
number += 1
if number==6:
f.write('alex')#只能从最后面写入
f.close()
把文件写入一个新文件中,并在遍历时修改所要修改的地方
f_read = open('小重山', 'r', encoding='utf-8')
f_write = open('小重山3', 'w', encoding='utf-8')
number = 0
for i in f_read:
number += 1
if number == 5:
i=''.join((i.strip(),'alex','\n'))
f_write.write(i)
f_write.close()
f_read.close()
2018/12/22
最新推荐文章于 2022-04-07 01:02:32 发布