• 3 文件操作


    一 文件操作

    1 文件路径

    2 编码方式:utf-8

    3 动作mode:读 ,读写,写读..

    例子:第一种写法:

     1 # f1 = open('D:a.txt', encoding='utf-8', mode='r')
     2 # content = f1.read()
     3 # print(content)
     4 # f1.close()
     5 
     6 
     7 f1,文件句柄,文件对象,file,f_handle,file_handle,f_obj
     8     open打开的指令,windows的指令,
     9     windows 默认编码方式gbk,linux默认编码方式utf-8,mac utf-810 
    11 
    12  1,打开文件,产生文件句柄。
    13     2,操作文件句柄。
    14     3,关闭文件。

    第二种写法:

    # with open('log1',encoding='utf-8',mode='r') as f1:
    #     print(f1.read())
    #     f1.close()

    二 文件的打开模式

     1 #1. 打开文件的模式有(默认为文本模式):
     2 r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】
     3 w,只写模式【不可读;不存在则创建;存在则清空内容】
     4 a, 只追加写模式【不可读;不存在则创建;存在则只追加内容】
     5 
     6 #2. 对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jgp格式、视频文件的avi格式)
     7 rb 
     8 wb
     9 ab
    10 注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码
    11 
    12 #3,‘+’模式(就是增加了一个功能)
    13 r+, 读写【可读,可写】
    14 w+,写读【可写,可读】
    15 a+, 写读【可写,可读】
    16 
    17 #4,以bytes类型操作的读写,写读,写读模式
    18 r+b, 读写【可读,可写】
    19 w+b,写读【可写,可读】
    20 a+b, 写读【可写,可读】

    1 r+详细解释:读写

    下面这个是新写入的东西不会被打印出来
    1
    # f1 = open('log1', encoding='utf-8', mode='r+') 2 # print(f1.read()) 3 # f1.write('666') 4 # f1.close()

    这个是可以打印出来刚写完后的内容
    
    # f1 = open('log1',encoding='utf-8',mode='r+')
    # f1.seek(0,2)   ##把光标调整到最后,然后再去写,原来的内容不会被覆盖
    # f1.write('aaaaaaaaaaaa')
    # f1.seek(0) ##然后把光标调整到最前面,再去读
    # print(f1.read())
    # f1.close()

    2 w只写,默认会清空之前的内容

    # f1 = open('log2', encoding='utf-8', mode='w')
    # f1.write('abc是披着高富帅外衣的纯屌丝.....')
    # f1.close()

    wb模式

    # f1 = open('log2', mode='wb')
    # f1.write('alex是披着高富帅外衣的纯屌丝.....'.encode('utf-8'))
    # f1.close()

    w+写读模式

    1 # f1 = open('log2', encoding='utf-8', mode='w+')
    2 # print(f1.read())
    3 # f1.write('666')
    4 # f1.close()

    a追加和a+(可写,可读)

     1 # f1 = open('log2', encoding='utf-8', mode='a')
     2 # f1.write('
    老男孩')
     3 # f1.close()
     4 
     5 #a+可写可读
     6 # f1 = open('log2', encoding='utf-8', mode='a+')
     7 # f1.write('fdsafdsafdsagfdg')
     8 # f1.seek(0)
     9 # print(f1.read())
    10 # f1.close()

    三 文件的改

    #1,打开原文件,产生文件句柄。
    #2,创建新文件,产生文件句柄。
    #3,读取原文件,进行修改,写入新文件。
    #4,将原文件删除。
    #5,新文件重命名原文件。

    1 import os
    2 with open('file_test', encoding='utf-8') as f1,
    3     open('file_test.bak', encoding='utf-8', mode='w') as f2:
    4     for line in f1:
    5         new_line = line.replace('SB','alex')
    6         f2.write(new_line)
    7 os.remove('file_test')
    8 os.rename('file_test.bak','file_test')

    四 文件的其他操作

    #read read(n) readline() readlines() write() close  readable  writable

     1 # read 全部读出
     2 # f1 = open('log1', encoding='utf-8')
     3 # content = f1.read()  #
     4 # print(content)
     5 # f1.close()
     6 
     7 
     8 #read(n)
     9 # f1 = open('log1', encoding='utf-8')
    10 # content = f1.read(5)  # r 模式 按照字符读取。
    11 # print(content)
    12 # f1.close()
    13 
    14 # f1 = open('log1', mode='rb')
    15 # content = f1.read(3)  # rb模式 按照字节读取。
    16 # print(content.decode('utf-8'))
    17 # f1.close()
    18 
    19 #readline()按行读取 读几行,下面写几行
    20 # f1 = open('log1', encoding='utf-8')
    21 # print(f1.readline())
    22 # print(f1.readline())
    23 # print(f1.readline())
    24 # print(f1.readline())
    25 # f1.close()
    26 
    27 
    28 #readlines() 将每一行作为列表的一个元素并返回这个列表
    29 # f1 = open('log1', encoding='utf-8')
    30 # print(f1.readlines())
    31 # f1.close()
    32 
    33 
    34 #for循环
    35 # f1 = open('log1', encoding='utf-8')
    36 # for i in f1:
    37 #     print(i)
    38 # f1.close()
    文件读取方式

    tell指针

    1 #tell 告诉指针的位置
    2 # f1 = open('log2', encoding='utf-8', mode='w')
    3 # f1.write('fdsafdsafdsagfdg')
    4 # print(f1.tell())
    5 # f1.close()
    6 #seek(参数),seek(0,2) 调至最后 按照字节去调整光标

    五 编码转换

    1 # s1 = b'xd6xd0xb9xfa'
    2 # s2 = s1.decode('gbk')
    3 # s3 = s2.encode('utf-8')
    4 # print(s3)  # b'xe4xb8xadxe5x9bxbd'
    5 # s1 = b'xd6xd0xb9xfa'.decode('gbk').encode('utf-8')
    6 # print(s1)

  • 相关阅读:
    C#删除程序自身【总结】
    X86(32位)与X64(64位)有什么区别,如何选择对应的操作系统和应用程序?
    【转】关于C#接口和抽象类的一些说明
    C# 的可空合并运算符(??)到底是怎样的宝宝?
    第三章 “我要点爆”微信小程序云开发之点爆方式页面和爆炸之音页面制作
    微信小程序云开发之云函数的创建与环境配置
    第五章 “我要点爆”微信小程序云开发实例之从云端获取数据制作首页
    第一章 “我要点爆”微信小程序云开发之项目建立与我的页面功能实现
    第四章 “我要点爆”微信小程序云开发之疯狂点击与糖果点爆页面制作
    Git的使用方法与GitHub项目托管方法
  • 原文地址:https://www.cnblogs.com/huningfei/p/8849749.html
Copyright © 2020-2023  润新知