• Python-读写文件


    一、文件有三种打开方式,分别为读、写、追加。默认读方式打开

    1、以读方式打开,文件不存在时,会报错

    2、以写方式打开,文件不存在时,会创建一个文件;文件存在时,会清空文件原有内容

    3、以追加方式打开,可读写文件,但是游标当前位置为文件末尾

     

    二、实现代码

    1、以“读”方式打开文件

    f = open('users.txt','r',encoding='utf-8') #如果文件不是uft-8编码方式,读取文件可能报错
    print(f.read()) #返回一个字符串,读取文件所有内容
    print(f.readlines()) #返回list,文件的每一行作为list的一个字符串元素
    print(f.readline()) #读取一行

     

    2、以“写”方式打开文件

    f = open('users.txt', 'w') #清空文件内容再写
    f.write('aaa') #只能写字符串
    f.write('
    ')
    f.writelines(['123','
    ', 'bbb','
    ']) #可写所有能迭代的类型,例如list
    f.writelines(('456','
    ', 'ccc')) #例如tuple
    f.close()

     

    3、以“追加”方式打开文件

    f = open('users.txt','a+') #可读写文件,文件不存在就创建一个文件
    f.seek(0) #要先把游标放到文件开始处,否则f.read()为空
    print(f.read()) #读取整个文件内容
    print('这里是分割线'.center(100, '-'))
    f.seek(0)
    for line in f: #高效率的读取方式,每次只读一行
        print(line)
    f.close()

     

    4、以 'r+' 或 ‘w+’ 方式打开文件

    f = open('users.txt','r+') #读写模式 r+,不会清空文件,但是写入的内容会替换原有的内容,从文件起始位置进行替换
     
    f = open('users.txt','w+') #写读模式 w+,请求文件,光标在写入文件的末尾

     

    三、修改文件

    1、第一种方式:读取原有文件,修改内容,删除原有数据,写入修改后的内容

    有时候发现write()之后,数据并没有写入文件,有可能是写入数据量太小,缓存区还未满,没有写入到磁盘。因此,加上函数f.flush(),强制将缓存区的数据写入磁盘中

    f = open('users.txt','a+')
    f.seek(0) #将游标指到起始位置
    old = f.read()
    new = old[:4] + '12'
    f.seek(0) #读取文件后,将游标重新指向起始位置
    f.truncate()  #清空游标之后的所有内容
    f.write(new) #写入新数据
    f.flush() #将缓存区的数据写入硬盘
    f.close()

    2、第二种方式:创建一个新文件,保存修改后的内容,再重命名

    import os
    with open('users.txt', 'r') as f, open('users_new.txt', 'w') as f1: #打开源文件并创建一个新文件
        old = f.read()  #读取源文件
        new = old.replace('ef', '12') #修改文件内容
        f1.write(new)  #将修改后的内容写入新文件
    os.remove('users.txt')  #删除原始文件
    os.rename('users_new.txt', 'users.txt')  #将新文件重命名为原始文件
  • 相关阅读:
    STM32 变量无法赋值问题
    ROS 多台计算机联网控制机器人
    Content-Disposition
    Arrays.asList()与toArray()
    length与size()
    computeIfAbsent
    共享锁、排他锁与意向锁
    行锁、页面锁与表锁
    classpath是什么
    start、run、join
  • 原文地址:https://www.cnblogs.com/jessicaxu/p/7679104.html
Copyright © 2020-2023  润新知