字符编码及文件操作

写代码和做人一样,从前往后看的时候,往往会看不明白,但是,如果站在结果,去看过往,一切都是如此的清澈透明,完全可以理解和接受.人生可以有遗憾,但是,代码不能有BUG.哈哈....扯远了,继续讲代码.字符编码与文件操作息息相关.因为在文件操作中,要判断光标(指针)的位置,就需要用不同的模式,而每个模式下,因为使用的方法不同,读内容的形式也会不同.

在ascii码中,1英文字母占1个字节;

在gbk中,1个英文字母占2个字节,1个普通汉字点2个字节,生僻汉字可能会占多个字节.

在utf-8中,1个英文字母占1个字节,1个普通汉字点3个字节,生僻汉字可能会占多个字节.

在文件操作中:

seek(参数1,参数2)方法用来移动光标,参数1(填写光标要移动几个字节),参数2:填写模式(有3个模式(0:参照文件的开头位置,在t和b模式下都可以使用 1:参照光标所在的当前位置,只能在b模式下用 2:参照文件的末尾位置,只能在b模式下使用))

然后,配合realine()就可以写出一个简单的实时监测文件内容是否被修改,的程序,若文件被修改,刚实时打印修改内容.代码如下:

# 源文件
import time  #导入time模块
tm = time.strftime("%Y-%m-%d %X")  #获取当前时间
with open('old1.txt','a',encoding='utf-8') as write_f:  #打开文件
    ctt = '%sthis a test.\n'%(tm)   #设置写入文件的内容
    write_f.write(ctt)     #将内容写入文件
with open('old1.txt','rb') as read_f:  #以二进制只读方式,打开文件
    read_f.seek(0,2)         #将光标称动到文件末尾
    while True:           #循环读取文件内容
        line = read_f.readline()   #读取文件末尾内容
        if line:       #判断是否有新内容
            print('新增内容%s'%(line.decode('utf-8')))   #打印新内容        

 

posted @ 2019-07-08 19:33  去遇见最好的自己  阅读(82)  评论(0编辑  收藏  举报