zoukankan      html  css  js  c++  java
  • 文件补课

    # f1=open('a2.txt',encoding='utf-8')
    # print(f1.read())
    # f1.close()
    '''
    f1 或者文件句柄 ,f,file,file hander,f_h..
    open()调用的内置函数,内置函数调用的系统内部的open,(windows、linux、mac内部的open)
    一切对文件进行的操作都是基于文件句柄f1的 
    '''
    
    '''
    文件
    操作文件
    1.文件路径
    2.编码方式
    3,动作mode
    
    代码
    # f1 = open('D:空姐护士老师主妇.txt', encoding='utf-8', mode='r')
    # content = f1.read()
    # print(content)
    # f1.close()
    执行流程:
     1,打开文件,产生文件句柄。
     2,操作文件句柄。
    3.关闭文件句柄!!
    报错原因:
        1.编码错误:编码不一致
        UnicodeDecodeError: 'gbk' codec can't decode byte 0x97 in position 109: illegal multibyte sequence
        2.路径错误:未转义   
        加\  或加r(推荐)r'F:\Python自动化21期\day03\1.txt'
    
    '''
    
    
    
    '''
    读:r rb r+ r+b
    1.read()全读出来
    2.r 模式 read(n) 读一部分,按字符去读取(n个中文或n个数字或符号)
    rb 模式 read(n) 读一部分,按字节去读取(eg:4时,就是4个字节,但无法解码的)
    3.readline按行读取
    4.readlines 全读出来,将每一行作为列表的每一个元素,并返回这个列表
    5.for循环----几乎不占内存,相当于循环readlines的列表,但节省空间啊--推荐
    f1=open('a2.txt',encoding='utf-8')
    for line in f1:
        print(line)
    f1.close()
    
    r+读写,先读后写   --- 先写后读可能报错
    
    
    
    写:w  wb  w+  w+b
    w没有文件,新建文件写入内容
        有原文件,先清空内容,在写入新内容
    
    #wb图片的读取及写入
    f1=open('1.jpg','rb')
    content=f1.read()
    
    f2=open('2.jpg','wb')
    f2.write(content)
    f1.close()
    f2.close()
    
    w+ 先写后读   先写入,调整光标,在全部读出
    f1=open('a1.txt',encoding='utf-8',mode='w+')
    f1.write('老dfhdfjggggggggggggggfdj')
    f1.seek(0)  #调整光标
    print(f1.read())
    f1.close()
    
    追加:a ab a+ a+b
    a没有文件,新建文件写入内容
        有原文件,在最后追加   ----可以加
    换行
    f1=open('a1.txt',encoding='utf-8',mode='a')
    f1.write('
    测试')
    f1.close()
    
    a+ 追加写读
    f1=open('a1.txt',encoding='utf-8',mode='a+')
    f1.write('
    zzz')
    f1.seek(0)  #调整光标
    print(f1.read())
    f1.close()
    '''
    # f1=open('a.bak','rb')
    # print(f1.read())
    # f1.close()
    
    # f1=open('a1.txt',encoding='utf-8',mode='a+')
    # f1.write('
    zzz')
    # f1.seek(0)  #调整光标
    # print(f1.read())
    # f1.close()
    
    # #wb图片的读取及写入
    # f1=open('1.jpg','rb')
    # content=f1.read()
    #
    # f2=open('2.jpg','wb')
    # f2.write(content)
    # f1.close()
    # f2.close()
    
    '''
    其它操作方法:
    read readline readlines write
    flush 刷新文件内部缓冲区
    readable是否可读 返回True False
    writable是否可写 返回True False
    tell告诉光标位置----------(按字节)
    seek调整光标位置 0   seek(0,2)光标调整到最后   
        ftp上传下载--断点续传依赖于seek
    
    f1=open('a1.txt',encoding='utf-8')
    # print(f1.readable())
    # print(f1.writable())
    print(f1.read(3))
    print(f1.tell())
    # f1.seek(0)  #光标调整到开头
    f1.seek(11) #任意调整
    # f1.seek(0,2)  #光标调整到最后
    print(f1.tell())  #告诉光标的位置
    f1.close()
    
    truncate 按照字节去截取,必须在a或a+模式   截断数据,仅保留指定之前数据
    # f1=open('a1.txt',encoding='utf-8',mode='a+')
    # f1.truncate(3)
    # f1.close()
    
    '''
    
    # f1=open('a1.txt',encoding='utf-8')
    # # print(f1.readable())
    # # print(f1.writable())
    # print(f1.read(3))
    # print(f1.tell())
    # # f1.seek(0)  #光标调整到开头
    # f1.seek(11) #任意调整
    # # f1.seek(0,2)  #光标调整到最后
    # print(f1.tell())  #告诉光标的位置
    # f1.close()
    
    # f1=open('a1.txt',encoding='utf-8',mode='a+')
    # f1.truncate(3)
    # f1.close()
    
    '''
    with
    1.可以同时操作多个文件
    2.不用手动关闭
    注意:对同一文件又读又写有时会出问题,共用一个文件句柄错误;可以读完之后,写f1.close()主动关闭
    
    #文件的改
    #1,以读模式打开原文件,产生文件句柄。
    #2,以写的模式打开一个新文件,产生文件句柄。
    #3,读取原文件,进行修改,将修改后的内容写入新文件。
    #4,将原文件删除。
    #5,新文件重命名原文件。
    
    '''
    
    # with open('a1.txt',encoding='utf-8') as f1,
    # open('a2.txt',encoding='utf-8',mode='w') as f2:
    #     print(f1.read())
    #     f2.write('3333')
    
    # import os
    # with open('file_test', encoding='utf-8') as f1,
    #     open('file_test.bak', encoding='utf-8', mode='w') as f2:
    #     old_content = f1.read()
    #     new_content = old_content.replace('alex','SB')
    #     f2.write(new_content)
    # os.remove('file_test')
    # os.rename('file_test.bak','file_test')
    
    # import os
    # with open('file_test.py', encoding='utf-8') as f1,
    #     open('file_test.bak', encoding='utf-8', mode='w') as f2:
    #     for line in f1:  #for循环未结束一直在持续写,所以w也不覆盖;一个文件句柄可以写多次,只要未关闭之前。
    #         new_line = line.replace('alex','SB')
    #         f2.write(new_line)
    # os.remove('file_test.py')
    # os.rename('file_test.bak','file_test.py')
    
    
    with open('a1.txt',encoding='utf-8',mode='w') as f1:
        f1.write('111')
        f1.write('2222221')
  • 相关阅读:
    【NOIP2003提高组】加分二叉树
    【luogu1220】关路灯
    【luogu2583】地铁间谍
    Hello, World!
    python中的画笔控制函数
    python中库引用与import
    python中RGB色彩
    turtle角度坐标体系
    turtle空间坐标系
    python中turtle库的使用
  • 原文地址:https://www.cnblogs.com/lijie123/p/9157780.html
Copyright © 2011-2022 走看看