• 9、文件操作


    一.文件处理流程

    1. 打开文件,得到文件句柄并赋值给一个变量
    2. 通过句柄对文件进行操作
    3. 关闭文件
    f=open('a.txt','w')
    f.write('111111
    ')
    f.close()

    二.基本操作

    2.1 文件编码

    #不指定打开编码,默认使用操作系统的编码,windows为gbk,linux为utf-8,与解释器编码无关
    f=open('chenli.txt',encoding='gbk') #在windows中默认使用的也是gbk编码,此时不指定编码也行
    f.read()
    

      

    2.2 文件打开模式

    f=open('文件名','模式')
    f=open('a.txt','r+') #读写
    f=open('a.txt','w+') #写读
    f=open('a.txt','a+') #追加并且读
        。
        。
        。
        。
        。
        。

    打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。

    打开文件的模式有:

    • r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】
    • w,只写模式【不可读;不存在则创建;存在则清空内容】
    • x, 只写模式【不可读;不存在则创建,存在则报错】
    • a, 追加模式【可读;   不存在则创建;存在则只追加内容】

    "+" 表示可以同时读写某个文件

    • r+, 读写【可读,可写】
    • w+,写读【可读,可写】
    • x+ ,写读【可读,可写】
    • a+, 写读【可读,可写】

     "b"表示以字节的方式操作

    • rb  或 r+b
    • wb 或 w+b
    • xb 或 w+b
    • ab 或 a+b

     注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码

    常见的mode取值组合

    r或rt 默认模式,文本模式读
    rb 二进制文件
    
    w或wt 文本模式写,打开前文件存储被清空
    wb 二进制写,文件存储同样被清空
    
    a 追加模式,只能写在文件末尾
    a+ 可读写模式,写只能写在文件末尾
    
    w+ 可读写,与a+的区别是要清空文件内容
    r+ 可读写,与a+的区别是可以写到文件任何位置
    

    2.3 上下文管理

    1 #上下文管理
    2 with open('a.txt','r',encoding='utf-8') as f,open('b.txt') as b_f:
    3     # print(f.read())
    4     print('====>')

    补充

     1 for i in range(3):
     2     print(i)
     3     # continue
     4     if i == 1:
     5         break
     6 else:
     7     print('=============>') #当for循环不被break打断,就会执行else的代码
     8 
     9 with open('a.txt','r',encoding='utf-8') as read_f,
    10         open('aa.txt','w',encoding='utf-8') as write_f:
    11 
    12     for line in read_f:
    13         write_f.write(line)
    14     else:
    15         print('write successfull')

    2.4 文件的操作方法

    f.read                            读取文件所有内容

    f.read                            读取文件所有内容

    f.readline                      读取一行内容

    f.readlines                    读取每行内容,返回一个列表

    f.close()                        关闭文件

    f.seek()                         移动指针到指定位置

    f.tell()                           获取当前指针位置

    f.flush()                        把缓存写入到硬盘

    f.mode()                       显示文件打开格式

    f.truncate()                   f.truncate(10)截取文件0-10字符,超出部分删除

    f.writelines()                传入一个列表,并将列表每个元素写入到文件

    f.xreadlines()                已迭代方式循环文件,每循环一次,只读一行。处理大文件效率高

     1 #不常用的,了解
     2 
     3 with open('a.txt','r',encoding='utf-8') as f:
     4     print(f.read(4)) #数字指的是读的是字符
     5 
     6 with open('a.txt','rb') as f:
     7     print(f.read(1)) #数字指的是读的是字符
     8 
     9 
    10 with open('a.txt','r',encoding='utf-8') as f:
    11     f.seek(3) #seek内指定的数字代表字节
    12     print(f.tell()) #当前光标所在的位置
    13     print(f.read())
    14 
    15 with open('aa.txt','r+',encoding='utf-8') as f:
    16     # f.seek(3) #seek内指定的数字代表字节
    17     # print(f.read())
    18 
    19     f.truncate(1)
    20 
    21 
    22 with open('b.txt','rb') as f:
    23     f.read()
    24     f.seek(3) #默认情况,是以文件起始位置作为开始,往后移动3个bytes
    25     f.read(1)
    26     print(f.tell())
    27     f.seek(2,1) #1 代表以当前光标所在的位置为开始,往后移动2个 bytes
    28     print(f.tell())
    29 
    30     f.seek(-1,2) #2表以当前光标所在的位置为开始,往后移动2个 bytes
    31     print(f.tell())
    32 
    33     f.seek(0,2)
    34 
    35 with open('c.txt','r',encoding='utf-8') as f:
    36     f.seek(0,2)
    37     print('====>',f.read())

    2.5 文件的修改

     1 import os
     2 with open('a.txt','r',encoding='utf-8') as read_f,
     3         open('.a.txt.swap','w',encoding='utf-8') as write_f:
     4     for line in read_f:
     5         if line.startswith('hello'):
     6             line='哈哈哈
    '
     7         write_f.write(line)
     8 
     9 os.remove('a.txt')
    10 os.rename('.a.txt.swap','a.txt')
  • 相关阅读:
    [HEOI2015]兔子与樱花
    Qt5——从零开始的Hello World教程(Qt Creator)
    qt利用QT designer构建第一个界面helloworld工程
    兆芯处理器的发展之路 从南北桥架构到开先KX-5000系列
    SPEC CPU 使用简介
    国产龙芯3A3000处理器评测:与英特尔差距明显
    测试
    【转载】ltp压力测试结果分析脚本
    H5开发基础之像素、分辨率、DPI、PPI
    【转载】分辨率和像素是什么关系?
  • 原文地址:https://www.cnblogs.com/deasion/p/6880658.html
Copyright © 2020-2023  润新知