zoukankan      html  css  js  c++  java
  • 文件高级应用

    文件高级应用

    一、可读与可写

    • r + t or r+ :可读,可写
    • w + t or w+: 可读, 可写
    • a + t or a+: 可读, 可写
    with open('test.txt', 'r+', encoding='utf-8') as fw:
        print(fw.readable())
        print(fw.writable())
    

    True
    True

    with open('test.txt', 'w+', encoding='utf-8') as fw:
        print(fw.readable())
        print(fw.writable())
    

    True
    True

    # a+ 会默认将鼠标指针移动到文件末尾
    with open('test.txt', 'a+', encoding='utf-8') as fr:
        print(fr.readable())
        print(fr.writable())
    

    True
    True

    二、 文件内指针移动

    假设我们需要在文件内容中间的某一行增加内容,如果使用基础的r/w/a模式实现是非常困难的,因此我们需要对文件内的指针进行移动,硬盘上从来没有修改一说,硬盘上只有覆盖,即新内容覆盖新内容。

    1.seek(offset,whence): offset代表文件指针的偏移量,偏移量的单位是字节个数(字节编码)

    with open('test.py', 'rb') as fr:
        fr.seek(1)  # 1表示位移1位,默认从文件头开始
        fr.seek(1, 0)  # 1表示偏移1位,0表示从头开始  # b'xad'
        fr.seek(2, 1)  # 1表示偏移1位,1表示从当前位置开始  # b'xad'
        fr.seek(0, 2)  # 0表示偏移0位,2表示文件末开始,把指针移到文件末
        print(fr.read())  #
    

    fr.seek(4, 0): 3

    2.tell(): 每次统计都是从文件开头到当前指针所在位置(字节 b'xad')

    with open('test.txt', 'rb') as fr:
        fr.seek(4, 0)
        print(f"fr.tell(): {fr.tell()}")
    

    fr.tell(): 4

    3.read(n): 只有在模式下的read(n),n代表的是字符个数,除此之外,其他但凡涉及文件指针的都是字节个数

    # read()
    with open('36r.txt', 'rt', encoding='utf-8') as fr:
        print(f"fr.read(3): {fr.read(3)}")
    

    fr.read(3): sdf

    4.truncate(n): truncate(n)是截断文件,所以文件的打开方式必须可写,但是不能用w或w+等方式打开,因为那样直接清空文件了,所以truncate()要在r+或a或a+等模式下测试效果。它的参照物永远是文件头。并且truncate()不加参数,相当于清空文件。

    # truncate()
    with open('36r.txt', 'ab') as fr:
        fr.truncate(2) # 截断2个字节后的所有字符,如果3个字节一个字符,只能截断2/3个字符,还会遗留1/3个字符,会造成乱码
    
    在当下的阶段,必将由程序员来主导,甚至比以往更甚。
  • 相关阅读:
    hdu 3666 差分约束系统
    hdu 1198农田灌溉
    常微分方程(阿諾爾德) Page 45 相空間,相流,運動,相曲線 註記
    高等微積分(高木貞治) 1.4節 例2
    常微分方程(阿諾爾德) Page 45 相空間,相流,運動,相曲線 註記
    解析函數論 Page 29 命題(2) 函數模的有界性
    高等微積分(高木貞治) 1.4節 例2
    解析函數論 Page 29 命題(1) 有界閉集上的一致連續性
    解析函數論 Page 29 命題(3) 模的下界的可達性
    解析函數論 Page 29 命題(2) 函數模的有界性
  • 原文地址:https://www.cnblogs.com/randysun/p/11323946.html
Copyright © 2011-2022 走看看