文件操作的初识,文件操作的读,写,追加,文件操作的其他模式,文件操作的其他功能,打开文件的另一种方式,文件操作的改...

1 内容总览

  • 文件操作的初识
  • 文件操作的读
  • 文件操作的写
  • 文件操作的追加
  • 文件操作的其他模式 r+
  • 文件操作的其他功能
  • 打开文件的另一种方式 - with open
  • 文件操作的改---(很重要!!)

2 具体内容

  1. 文件操作的初识

    • 护士空姐少妇的联系方式.txt

    • 利用python代码写一个很low的软件,去操作文件。

      • 文件路径:path
      • 打开方式:读,写,追加,读写,写读......
      • 编码方式:utf-8,gbk ,gb2312......
    • f1 = open('d:\主妇空姐模特联系方式.txt',encoding='utf-8',mode='r')  #txt要写上!
      content = f1.read()
      print(content)
      f1.close()   #f相当于锅的把手,操作文件的
    • 代码解释:

      open 内置函数,open底层调用的是操作系统的接口。
      f1,变量,f1,fh,file_handler,f_h,文件句柄。 对文件进行的任何操作,都得通过文件句柄. 的方式。
      encoding:可以不写,不写参数,默认编码本:操作系统的默认的编码
      windows: gbk。
      linux: utf-8.
      mac : utf-8.
      f1.close() 关闭文件句柄。
      mode="r"代表模式是 读    #mode为"r"时,可不写,默认就是r
    • 文件操作的三部曲:

      • 1,打开文件。
      • 2,对文件句柄进行相应操作。
      • 3,关闭文件。
    • 报错原因:

      • UnicodeDecodeError:文件存储时与文件打开时编码本运用不一致。

      • 第二个错误: 路径分隔符产生的问题(在最前面加个r即可):

        • r'C:\Users\oldboy\Desktop\主妇空姐模特联系方式.txt'
  2. 文件操作的读

    r , rb, r+,r+b 四种模式

    r:  read()**                                    read(n) readline() readlines() 
    
     for ***
    
    rb: 操作的是非文本的文件。图片,视频,音频。  #带b操作的,写open()时,不用写encoding!
    # read 全部读出来  **
    # f = open('文件的读', encoding='utf-8')#编码集可以不写,但windows系统默认gbk,linx苹果-utf-8
    # content = f.read()  #全读
    # print(content,type(content))
    # f.close()  #注:文件全读取后,再次读取,读不到内容!!!
    
    # read(n) 按照字符读取  #读几个字
    # f = open('文件的读', encoding='utf-8')
    # content = f.read(5)
    # print(content)
    # f.close()
    
    # readline()   #只读第一行内容
    # f = open('文件的读', encoding='utf-8')
    # print(f.readline())
    # print(f.readline())
    # print(f.readline())
    # f.close()
    
    # readlines() 返回一个列表,列表中的每个元素是源文件的每一行。 
    # f = open('文件的读', encoding='utf-8')
    # l1 = f.readlines()   
    # for line in l1:
    #     print(line)
    # # print(l1)
    # f.close()
    
    # for 读取    
    # f = open('文件的读', encoding='utf-8')
    # # ['abc太白金星最帅\n', '老男孩最好的老师\n', '老男孩教育是最好的学校\n', 'fhsjdkfha\n', 'fhdsfads\n']
    # for line in f:  #for遍历文件句柄 -一行一行的读
    #     print(line)
    # f.close()
    
    # f = open('美女.jpg',mode='rb')
    # content = f.read()
    # print(content)
    # f.close()
  3. 文件操作的写

    w,wb, w+,w+b 四种模式 #w+木有用!

    # w-清空写    #注:分2步:先清空,再写入内容  #不管写入几次,都只有最后一次写入的内容
    # 没有文件,创建文件,写入内容
    # f = open('文件的写',encoding='utf-8',mode='w')
    # f.write('随便写一点')
    # f.close()
    
    # 如果文件存在,先清空原文件内容,在写入新内容
    # f = open('文件的写',encoding='utf-8',mode='w')
    # f.write('太白最帅....')
    # f.close()
    
    
    
    # wb
    # f = open('美女.jpg',mode='rb')
    # content = f.read()
    # # print(content)
    # f.close()
    #
    # f1 = open('美女2.jpg',mode='wb')
    # f1.write(content)
    # f1.close()
    
  4. 文件操作的追加

    a, ab, a+,a+b 四种模式 #a+也木有用 #a+ 追加写 读

    # 没有文件创建文件,追加内容
    # f = open('文件的追加',encoding='utf-8',mode='a')  #在文件末尾追加内容
    # f.write('太白最帅....')
    # f.close()
    
    # 有文件,在原文件的最后面追加内容。
    # f = open('文件的追加',encoding='utf-8',mode='a')
    # f.write('大壮,舒淇,b哥,雪飞')
    # f.close()
    
  5. 文件操作的其他模式 r+

    # 读并追加  # 顺序不能错误。
    # f = open('文件的读写', encoding='utf-8', mode='r+')
    # content = f.read()
    # print(content)
    # f.write('人的一切痛苦,本质都是对自己无能的愤怒。')
    # f.close()
    
    # 错误示例:
    # f = open('文件的读写', encoding='utf-8', mode='r+')
    # f.write('人的一切痛苦,,,本质都是对自己无能的愤怒,,,')
    # content = f.read()
    # print(content)
    # f.close()
  6. 文件操作的其他功能

    总结:

    三个大方向: 
    

    读,四种模式: r rb r+ r+b

    写,四种模式 : w,wb, w+,w+b

    追加 四种模式: a, ab, a+,a+b

    相应的功能:对文件句柄的操作:read read(n) readline() readlines() write()

    # tell 获取光标的位置 单位字节。
    # f = open('文件的读写', encoding='utf-8')
    # print(f.tell())
    # content = f.read()
    # # print(content)
    # print(f.tell())   #查看光标: tell()  有返回值 返回的就是当前光标的位置
    # f.close()
    
    # seek 调整光标的位置   
    # f = open('文件的读写', encoding='utf-8')
    # f.seek(7)
    # content = f.read()
    # print(content)
    # f.close()
    seek 移动光标:
      seek(0,0) 文件开始位置
      seek(0,1) 光标的当前位置
      seek(0,2) 文件末尾位置
      seek(3)   按照字节调节  使用utf-8是3 gbk是2
    
    # flush 强制刷新
    # f = open('文件的其他功能', encoding='utf-8',mode='w')
    # f.write('fdshdsjgsdlkjfdf')
    # f.flush()
    # f.close()
    
  7. 打开文件的另一种方式 - with open

    # 优点1: 不用手动关闭文件句柄
    # with open('文件的读',encoding='utf-8') as f1: #with open 是面向对象中的上下文管理 #as-作为
    #     print(f1.read())
    
    # 优点2:可以打开(操作)多个文件  #也可以同时操作1个文件
    with open('文件的读', encoding='utf-8') as f1,\   #加个逗号和换行符即可
            open('文件的写', encoding='utf-8', mode='w')as f2:
        print(f1.read())
        f2.write('hfdsjkghkajhsdjg')
    
    # 缺点:待续。
    
  8. 文件操作的改---(最重要!!)

    • 文件操作改的流程:
      1, 以读的模式打开原文件。
      2,以写的模式创建一个新文件。
      3,将原文件的内容读出来修改成新内容,写入新文件。
      4,将原文件删除。
      5,将新文件重命名成原文件。
    • 具体代码:
    # low版
    # import os
    # # 1, 以读的模式打开原文件。
    # # 2,以写的模式创建一个新文件。
    # with open('alex自述',encoding='utf-8') as f1,\
    #     open('alex自述.bak',encoding='utf-8',mode='w') as f2:
    # # 3,将原文件的内容读出来修改成新内容,写入新文件。
    #     old_content = f1.read()
    #     new_content = old_content.replace('alex', 'SB')
    #     f2.write(new_content)
    # os.remove('alex自述')
    # os.rename('alex自述.bak','alex自述')
    
    
    # 进阶版:
    import os
    # 1, 以读的模式打开原文件。
    # 2,以写的模式创建一个新文件。
    with open('alex自述',encoding='utf-8') as f1,\
        open('alex自述.bak',encoding='utf-8',mode='w') as f2:
    # 3,将原文件的内容读出来修改成新内容,写入新文件。
        for line in f1:
            # 第一次循环 SB是老男孩python发起人,创建人。
            new_line = line.replace('SB', 'alex')
            f2.write(new_line)
    os.remove('alex自述')   
    os.rename('alex自述.bak','alex自述')  #(old new)
    
    
    
    # 有关清空的问题:
    # 关闭文件句柄,再次以w模式打开此文件时,才会清空。
    # with open('文件的写', encoding='utf-8',mode='w') as f1:
    #     for i in range(9):
    #         f1.write('恢复贷款首付款')
    

3 understand and remember

  • 文件操作:
    • r w a rb wb r+ ab 重点记
    • read() write tell seek flush
    • 文件的改的代码必须会默写。

转载于:https://www.cnblogs.com/wanshizidiao/p/11017836.html

猜你喜欢

转载自blog.csdn.net/weixin_34297300/article/details/93199610
今日推荐