day9学习日记

今日内容

  • 文件处理的基本操作

    1,什么是文件

    文件是操作系统提供给用户或者说应用程序操作硬盘的一种功能

    2,为何要用文件

    读写文件就是在读写硬盘:我们对文件的读写操作都会被操作系统转换成硬盘的读写操作‘

     

    应用程序------------------》文件对象,文件句柄

    操作系统------------------》文件

    硬件------------------------》硬盘

    3,如何用文件

    操作系统能打开的文件是一定了,文件不用一定要关

    f = open(r'a.txt',mode='rt',encoding='utf-8')
    print(f)
    print(r.read)

    f.close() # 回收的操作系统的资源
    # del f 一般不需要

    open发送请求给操作系统打开文件,有返回值

    f是文件对象,文件句柄(类似游戏机手柄)

    day9学习日记

    with open(r'a.txt', mode='rt', encoding='utf-8') as f,\
           open('b.txt',mode='wt',encoding='utf-8') as f1:
       pass
    # with会帮你close
  • 文件的打开模式

    1,控制文件读写操作的模式

    r:只读模式,如果文件不存在则报错,则文件指针在文本开头

    w:只写模式,如果文件不存在则创建空文档,文件存在则清空,文件指针处于文件开头

    总结:w模式,在打开了文件不关的情况下,连续的write写入,新写的内容永远跟在后面

    a:只追加写模式,如果文件不存在则创建空文档,文件存在不会清空,文件指针处于文件末尾

    总结:a模式,在打开了文件不关的情况下,连续的write写入,新写的内容永远跟在后面,这一点与w模式相同

    不同的是,在打开了文件关闭然后重新打开的情况下,a模式永远写在后面

    2,控制文件读写内容的模式

    t:读写都是以字符串为单位的,只适用于文本文件必须指定encoding参数

    b:读写都是已bytes为单位的,适用与所有文件,一定不能指定encoding参数

    3,可读可写

    r+t:指针在开头

    w+t:指针在开头但是文件会清空

    a+t

     

    r+b

    w+b

    a+b

    r模式
    f = open('a.txt',mode='rt',encoding='utf-8')
    print(f.read())
    print('='*50)
    print(f.read())
    print(f.readable())
    print(f.writable())
    f.close()



    w模式
    f = open('a.txt',mode='wt',encoding='utf-8')
    f.write("你好\n")
    f.write("哈哈哈\n")
    f.write("我擦勒\n")

    f.write("你好\n哈哈哈\n我擦勒\n")
    print(f.readable())
    print(f.writable())

    f.close()
       
       
       
    a模式    
    f = open('c.txt',mode='at',encoding='utf-8')
    f.write("4444\n")
    f.write("555\n")
    f.write("6666\n")
    print(f.readable())
    print(f.writable())
    f.close()

    b模式
    with open('1.mp4',mode='rb') as f:
       res = f.read()
       print(res.decode('utf-8'))


    with open('a.txt',mode='rb') as f:
        res = f.read()
        print(res.decode('utf-8'))


    with open('a.txt',mode='ab') as f:
        f.write("啊手动阀手动阀".encode('utf-8'))


    # 例:文件拷贝功能
    # # 方案一:如果文件过大,内容容易溢出
    # with open('1.mp4',mode='rb') as f1,open(r'D:\1111111.mp4',mode='wb') as f2:
    #     res = f1.read()
    #     f2.write(res)


    # 方案二:
    # 储备知识: 一行一行的读  
    # with open('a.txt',mode='rt',encoding='utf-8') as f:
    #     # f.read()
    #     for line in f:
    #         print(line,end='')


    # with open('1.mp4',mode='rb') as f:
    #     for line in f:
    #         print(line)

    # 具体实现:
    # with open('1.mp4',mode='rb') as f1,open(r'D:\1111111.mp4',mode='wb') as f2:
    #     for line in f1:
    #         f2.write(line)




    可读可写
    # with open('a.txt',mode='rt',encoding='utf-8') as f:
    #     # lines = f.readlines()把读出来的放到列表中
    #     # print(lines)
    #
    #     print(f.readline()) 读多行
    #     print(f.readline())


    # with open('a.txt',mode='wt',encoding='utf-8') as f:
    #     # f.write("111\n222\n333\n")
    #
    #     # lines = ['111\n','222\n','3333\n']
    #     # for line in lines:
    #     #     f.write(line)
    #
    #     # f.writelines(lin es)相当于执行了一个for循环,每取出 一个值就输出一次
    #
    #     f.write('hello')
    #     f.flush()(刷新,立即将数据送到硬盘)
    #     # f.writelines('hello')
  • 文件指针移动

    大前提:只有t模式下的,f.read(n)中的n代表字符个数,关于指针移动的单位都是字节

    # f.read()
    # with open('a.txt',mode='rt',encoding='utf-8') as f:
    #     res = f.read(6)
    #     print(res)

    # with open('a.txt',mode='rb') as f:
    #     # res = f.read(6)
    #     res = f.read(8)
    #     print(res.decode('utf-8'))

    # f.truncate()# 截断文件,w模式下没有意义,后面的内容都不要了
    # with open('a.txt',mode='r+t',encoding='utf-8') as f:
    #     f.truncate(8)


    # f.seek移动的全都是字节个数
    # f.seek(字节个数,0)参照文件开头
    # f.seek(字节个数,1)参照当前指针
    # f.seek(字节个数,2)参照末尾

     

  •  

上一篇:Day9:构造方法,字符串


下一篇:Hiver 操作 MySQL 导致锁表