zoukankan      html  css  js  c++  java
  • python文件操作-修改文件中的内容-with的用法

    一、文件读写有缓冲区

    1 fw = open('nhy','w')
    2 fw.write('sdfsdf')
    3 fw.flush()# 把缓冲区里面的数据立即写到磁盘上
    4 fw.close()

    二、with的用法,可直接打开文件进行读写,读写完成之后会主动关闭文件

    打开多个文件时,使用逗号隔开即可。

    1 with open('nhy','w') as fw, open('nhy2','w') as fw2:
    2     fw.read()
    3     fw.write('xxx')

     三、文件修改

    1、简单粗暴直接
     (1)先获取到文件里面所有的内容
     (2)然后修改内容
     (3)清空原来文件里面的内容
     (4)重新写入

    举例如下:

    1 f = open('user-pwd.txt','a+')
    2 f.seek(0)
    3 all_data = f.read()
    4 new_data = all_data.replace('123','python')
    5 f.seek(0)
    6 f.truncate()# 清空文件内容
    7 f.write(new_data)
    8 f.flush()
    9 f.close()

      2、高效的处理方式
       words         words_new
     (1)先打开原来的文件,再打开一个空文件
     (2)循环处理原来文件里面的每一行数据,处理完之后写到新文件里面
     (3)把原来的文件删除,把新文件的名字改成原来文件的名字

    1 import os
    2 with open('words',encoding='utf-8') as fr,open('.words','w',encoding='utf-8') as fw:
    3     for line in fr:
    4         line = line.lstrip()# 去掉左边的空格
    5         if line:# 判断这一行是否有数据
    6             line = line.replace('','you')# 替换数据
    7             fw.write(line)# 写到新文件里面
    8 os.remove('words')# 删除原来的文件
    9 os.rename('.words','words')#把新文件的名字改成原来文件的名字

     四、读取文件全部内容,按行显示

    1 f = open('user-pwd.txt',encoding='utf-8') # 文件句柄,文件对象
    2 
    3 for line in f:    #直接循环文件对象
    4     print('line:',line)

    修改大文件的时候,可以用with

    with open('user.txt',encoding='utf-8') as f: #文件对象,文件句柄
        for line in f:
            line = line.strip()
            if line:
                print(line)
  • 相关阅读:
    CF1454F Array Partition
    leetcode1883 准时抵达会议现场的最小跳过休息次数
    leetcode1871 跳跃游戏 VII
    leetcode1872 石子游戏VIII
    CF1355C Count Triangles
    CF1245D Shichikuji and Power Grid
    CF1368C Even Picture
    CF1368D AND, OR and square sum
    CF1395C Boboniu and Bit Operations
    SpringBoot和开发热部署
  • 原文地址:https://www.cnblogs.com/Noul/p/9162473.html
Copyright © 2011-2022 走看看