2018/12/22

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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值