Python基础知识之文件读写与修改

基本操作

f = open("file1", "r")  # 打开文件
first_line = f.readline() # 读一行
data = f.read() # 读取剩下所有内容,文件大时候不要用
f.close()  #关闭文件

如果我们想循环文件,并且在第九行输出分割的话:

for index, line in enumerate(file.readlines()):
    if(index == 5):
        print("-------我是分割线-------")
        continue
    print(line.strip())

注意: strip()方法是用来去除字符串首尾空格的

但是当我们打开一个大文件的时候我们就会发现一个问题,file.readlines()是提前将所有行数都先读取出来,再进行操作,那么当我们打开一个几十个G的文件的时候效果可想而知,因此上述方法基本不使用,应该使用以下方法:

count = 0
for line in file:
    if count == 9:
        print("-------我是分割线-------")
        count += 1
        continue
    print(line)
    count += 1

打开文件的模式有:

  • r, 只读模式(默认)
  • w,只写模式【不可读;不存在则创建;存在则删除内容】
  • a,追加模式【可读;不存在则创建;存在则只追加内容】

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

  • r+,可读写文件【可读;可写;可追加】-----一般使用这个模式
  • w+,可写读文件【可写;可读;可追加】-----基本用不到
  • a+,追加读写文件

“b”表示处理二进制文件(如:FTP发送上传ISO镜像文件,Linux可忽略,windows处理二进制文件时需要标注)

  • rb,以二进制的模式读取文件,不可以传encoding参数
  • wb,以二进制编码的模式写文件

    f.write("string字符串".encode())

“U”表示在读取时,可以将\r\n \r \n自动转换成\n(与r或r+模式同时使用)

  • rU
  • r+U

文件的方法

  • tell() 当前文件指向的指针,计数方式是按照字符个数
  • seek(字符位置) 查找文件相应字符位置

    seek(0)就是返回到文件开始位置,一般和tell()方法一起使用

  • encoding() 返回当前文件编码格式
  • flush() 刷新当前缓冲区,建议在关闭文件前先flush当前缓冲区。
模仿进度条:
   import sys, time
   for i in range(20):
       sys.stdout.write("#")
       sys.stdout.flush()
       time.sleep(0.1)

在前面,我们已经注意到python写文件的时候,会将之前的内容删除掉,重写覆盖,那么我们如何来修改文件呢?

文件修改的方式

  • 将文件加载到内存中像VIM那样,再进行修改
  • 打开一个文件,修改完成之后写到新文件里

修改文件的思路

  1. 打开两个文件
  2. 从源文件逐行读取,边读边写进新文件中
  3. 通过语句进行判断,找到需要需改的地方,修改文件,再将修改过后的内容写到新文件中。
f = open("yesterday", ‘r‘, encoding="utf-8")
fnew = open("yesterday.bak", "w", encoding="utf-8")

for line in f:
    if "修改前的语句" == line:
        line = line.replace("修改前的语句", "修改后的语句")
    fnew.write(line)
f.close()
fnew.close()

line = line.replace("修改前的语句", "修改后的语句") 注意是line而不是f

with语句

为了避免打开文件后忘记关闭,可以通过管理上下文,即:

with open("需要打开的文件", ‘r‘, encoding="utf-8") as f:
    # 执行语句...
    # 当跳出with程序块时,自动关闭文件

如此方式,当with代码块执行完毕后,内部会自动关闭并释放文件资源。
在python2.7后,with又支持同时对多个文件的上下文进行管理,即:

with open("需要打开的文件1") as f, open("需要打开的文件2") as f2:
    # 执行语句...
    # 当跳出with程序块时,自动关闭文件
时间: 2024-08-29 09:07:44

Python基础知识之文件读写与修改的相关文章

php杂记——1(基础知识与文件读写)

1.变量前面需要加美元符号"$",常量则不需要: define('PRICE',100); echo PRICE; 2.用一个变量的值作为另一个变量的名称可以得到类似C中的指针变量: 1 $varname = 'tireqty'; 2 $$varname = 5; 3 //等价于下面这条语句 4 $tireqty = 5; 3.number_format()函数可用来格式化一个浮点数的输出精度: $pi = 3.1415926536; echo number_format($pi,2)

python基础知识六 文件的基本操作+菜中菜

基础知识六 文件操作 ? open():打开 ? file:文件的位置(路径) ? mode:操作文件模式 ? encoding:文件编码方式 ? f :文件句柄 f = open("1.txt",mode = 'r',encoding = 'utf-8') print(f.read()) f.close 1.文件操作模式: ? r,w,a(重要) ? rb,wb,ab(次要) ? r+,w+,a+ 1.1 r/w/a 1. r操作: f = open('1.txt','r') pri

python新手学习之文件读写之修改

文件除r.w.a方式打开外,还可以有多种组合方式如r+ w+ a+等多种方式 1.r+ 读写模式介绍,开始读是从一行开始读,写永远从最后开始写(类似于追加) # f = open("test.txt","r+",encoding ="utf-8") f.readline() f.readline() f.readline() # 不管如何读或者是seek.文件永远从尾部追加.写时候,不会影响读光标位置. print("当前光标位置:&q

python基础操作_文件读写操作

#文件读写# r只能读不能写,且文件必须存在,w只能写不能读,a只能写不能读# w+是写读模式,清空原文件内容# r+是读写模式,没有清空原文件内容,# 只要有r,文件必须存在,只要有w,都会清空原文件# 如果在open的时候没有指定模式,那就是r的模式打开文件.# a+ 又能写又能读又不校验文件是否存在,还不清空原文件,完美啊# b是2进制的模式打开或者读写.如rb+ wb+ ab+# readline 读一行# readlines 读全部# writelens 写全部f=open('E:\i

Python基础知识两部曲:二

如果没有看基础部分第一章,请前往Python基础知识两部曲:一 8.函数 1.定义函数: 使用关键字def来告诉python你要定义一个函数 接着指出函数名:如下面函数名是--greet_user ()是必须带上的,这里可以可以传递一些参数,也可以不传 以:结尾,且与后面所有的缩进构成了函数体 调用函数直接写上函数名,如果有参数记得带上参数 1. 无参数的函数: def greet_user(): """显示简单的函数体""" print(&qu

Python基础知识梳理 - 第02部分

本文是Python基础知识的第二篇, 主要是对内置对象类型的介绍, 涉及的类型如下表. 数字类型 在Python中, 数字并不是一个真正的对象类型, 而是一组类似类型的分类, 如整数和浮点数, 复数等. Python还提供了若干处理数字对象的工具, 如内置数学函数pow, abs等, 标准库math, random等. 看下数字的简单使用. In [15]: 123 + 234 Out[15]: 357 In [16]: 1.5 * 4 Out[16]: 6.0 In [32]: pow(2,

python基础知识部分练习大全

python基础知识部分练习大全   1.执行 Python 脚本的两种方式 答:1.>>python ../pyhton.py 2. >>python.py   #必须在首行有 #!/usr/bin/env python3 指定执行语言 2.简述位.字节的关系 答:一个字节(byte)=8位(bit)  位为最小的单位 3.简述 ascii.unicode.utf-8.gbk 的关系 ascii:只能表示256个符号 unicode:万国码,各国都有 需要有2位来表示 utf-8

Python基础知识详解 从入门到精通(七)类与对象

本篇主要是介绍python,内容可先看目录其他基础知识详解,欢迎查看本人的其他文章Python基础知识详解 从入门到精通(一)介绍Python基础知识详解 从入门到精通(二)基础Python基础知识详解 从入门到精通(三)语法与函数Python基础知识详解 从入门到精通(四)列表.元组.字典.集合Python基础知识详解 从入门到精通(五)模块管理Python基础知识详解 从入门到精通(六)文件操作PS:很多人在学习Python的过程中,往往因为遇问题解决不了或者没好的教程从而导致自己放弃,为此

python 基础知识(一)

                                       python 基础知识(一) 一.python发展介绍 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC 语言的一种继承.之所以选中Python(大蟒蛇的意思)作为程序的名字,是因为他是一个叫Monty Python的喜剧团体的爱好者.Python是从ABC发展起来,主要受到了Modula-3(另一种相当