• CSIC_716_20191108【文件的操作,以及彻底解决编码问题的方案】


    关于编码的问题:

    在平时编写代码,涉及到打开文件时,常常遇到字符编码的报错,

    通过总结,得出以下规律

     如果在操作过程中涉及到调用文本文档,一定要在文本文档开头申明编码方式(# coding:XXXXX),否则python3解释器会默认为utf-8的编码方式,而常常在中文操作系统中默认生成的文本文档 是utf-8的格式,会出现报错。

    上节讲到打开文件的编码方式有三种,r、w、a叫做纯净模式,

    r+、w+、a+模式,在除了可读可写,其他特性与纯净模式一致。

    打开文件的时候,光标永远在文档最开始的地方

    f.seek(offset,whence)

    offset:代表字节移动的个数(相对偏移度)

    whence:指定光标从何处开始,有三个参数可选,0是从文档开头开始,1是从文档当前光标开始,2从文件末尾开始

    当whence=1或2时,处理文件的一定要是b。

    如果以rb模式打开,f.read(x),其中x表示移动的字节

    如果以rt模式打开,f.read(x),其中x表示移动的字符

    字节的光标移动,可以结合文件动态监控的程序理解

    监听程序:

    import time
    with open(r'point.txt', 'r', encoding='utf-8') as rf, 
            open(r'jianting.txt', 'a', encoding='utf-8') as af:
        rf.seek(0, 2)
        while True:
            time.sleep(1)
            res = rf.read()
            if res:
                af.write(res)
                af.write('
    ')
                print('正在写入')
                af.flush()
    

    文件操作程序

    import time
    
    modify_time = time.strftime('%Y-%m-%d %H:%M:%S')
    with open(r'point.txt', 'a', encoding='utf-8') as af:
        str1 = '神恶寇数据死地咚咚咚看到没'
        af.write(str1 + f'修改时间:{modify_time}')
    

      

    文件的修改

    文件的修改目前有两种方式,一种是将文件所有内容取出来,将需要改变的内容取出来修改,然后再以写模式写入原文件

    另一种方式是通过代码新建一个文件,将原文件内容取出来,将内容修改后存入新文件,然后导入os包,调用os.remove方法删除原文件,调用os.rename方法将新文件重命名为老文件名。详见代码

    '''
    方法1
    '''
    with open(r'作业文档gbk.txt', mode='r', encoding='gbk')as rf1:
        res1 = rf1.read()
    with open(r'作业文档gbk.txt', mode='w', encoding='gbk')as wf1:
        new_contents = res1.replace('tank', 'DSB')
        wf1.write(new_contents)
    '''
    方法2
    '''
    import os
    with open(r'作业文档2gbk.txt',mode='r',encoding='gbk')as rf, 
            open(r'作业文档2gbk_new.txt',mode='w', encoding='utf-8')as wf:
        res2 = rf.read().replace('tank', 'DSB')
        wf.write(res2)
    os.remove('作业文档2gbk.txt')
    os.rename('作业文档2gbk_new.txt', '作业文档2gbk.txt')
    

      

  • 相关阅读:
    【技术贴】解决Eclipse编译java源文件之后没有生成class文件|找不到class文件
    小米1s 正式为我服役,纪念一下。
    解决servlet的out输出流html中文乱码
    小米1s充电时屏幕一直亮着不关闭的解决办法
    今天遇到的问题分析
    java操作Excel(org.apache.poi.hssf.usermodel)
    HTML滚动文字代码 marquee标签
    MIUI小米 卸载金山安全服务
    Oracle DBA 逻辑备份试题
    Oracle DBA结构试题1
  • 原文地址:https://www.cnblogs.com/csic716/p/11823781.html
Copyright © 2020-2023  润新知