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

    文件的高级应用

    一.可读,可写

    1.1 r+t:可读,可写

    #'wt'
    with open('草稿.txt','wt',encoding='utf-8') as fw:
        print(fw.readable())
        print(fw.writable())
    
    # False
    # True
    

    1.2 w+t:可写,可读

    #'wt'
    with open('草稿.txt','w+t',encoding='utf-8') as fw:
        print(fw.readable())
        print(fw.writable())
    
    # True
    # True
    

    1.3 a+t:可追加,可读

    #'wt'
    with open('草稿.txt','r+t',encoding='utf-8') as fw:
        print(fw.readable())
        print(fw.writable())
    
    # True
    # True
    

    二.文件内指针移动

    假设我们需要在文件内容中间的某一行增加内容,如果使用基础的r/w/a模式实现是非常困难的,因此,我们需要在对文件的指针进行移动

    with open('草稿.txt','r+t',encoding='utf-8') as fr:
        fr.readline()
        fr.write('是的这就是草稿')  #写在文件的最后一行
    

    硬盘是哪个没有修改这么一说,只有覆盖,即新的内容覆盖旧的内容

    2.1 seek()

    seek(offset,whence): offset代表文件指针的偏移量,单位是字节

    # seek()
    with open('草稿.txt', 'rt', encoding='utf-8') as fr:
        print(f"fr.seek(4, 0): {fr.seek(3, 0)}")  # 0相当于文件头开始;1相当于当前文件所在位置;2相当于文件末尾
        
    # fr.seek(0,2)  # 切换到文件末尾
    # fr.seek(4, 0): 3
    

    2.2 tell()

    tell():每次统计都是从文件开头到当前指针的所在位置

    #tell()
    with open('草稿.txt', 'rt', encoding='utf-8') as fr:
        fr.seek(4,0)
        print(f"fr.tell(): {fr.tell()}") 
        
    # fr.tell(): 4
    

    2.3 read(n)

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

    #read
    with open('草稿.txt','rt',encoding='utf-8') as fr:
        print(f'fr.read(10):{fr.read(10)}')
        
    # fr.read(10):是的这就是草稿
    

    2.4truncate(n)

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

    #truncate
    with open('草稿.txt','r+t',encoding='utf-8') as fr:
        fr.truncate(3)
    
  • 相关阅读:
    Nginx有哪些作用?
    MYSQL如何优化?
    jdk1.8新特性
    [javase基础] JDK JRE JVM的区别?
    JDBC中如何进行事务处理?
    JDBC、ibatis(mybatis)、Hibernate有什么不同?
    java面试题最容易犯错
    Spring高频率面试题
    python pip whl安装和使用
    深入理解 Linux的进程,线程,PID,LWP,TID,TGID
  • 原文地址:https://www.cnblogs.com/LWX-YEER/p/11283243.html
Copyright © 2011-2022 走看看