• 【Python】-- 文件的读写操作


    一、文件的打开/创建

    open()

    使用open函数,可以打开一个已经存在的文件,或者创建一个新文件。

    语法:open(name,mode,encoding)

    其中,name:是要打开的目标文件名的字符串;

              mode:设置打开文件的模式:只读、写入、追加等;

              encoding:编码格式

    mode模式描述
    r以只读的方式打开文件,文件的指针将会放在文件的开头,这是默认模式。
    w打开一个文件只用于写入,如果该文件已存在则打开文件,并从头开始编辑,原有内容会被删除。如果文件不存在,则创建新文件。
    a打开一个文件追加内容,如果不存在,则创建并写入。

    例:

    f = open("D:/1.txt","r",encoding="UTF-8")

    二、文件的读取

    文件读取有三种方法:

    • read():读取整个文件的内容保存为字符串;
    • readline():逐行读取文件保存为字符串;
    • readlines():读取整个文件内容保存为列表。

    1、read()

    语法:文件对象.read(num)

    其中,num表示从文件中读取的数据的长度(单位字节),没有传入则表示读取所有数据。

    例:

    1. f = open("D:/save_date.txt","r",encoding="UTF-8")
    2. print(f.read(10))
    3. print(f.read())
    4. f.close # 关闭文件

    2、 readline()

    可以按照行的方式把文件中的内容进行一行读取,并且返回一个字符串。

    3、readlines()

    可以按照行的方式把整个文件中的内容进行一次性读取,并且返回一个列表,其中每一行的数据是一个元素。

    例:

    1. f = open("D:/save_date.txt","r",encoding="UTF-8")
    2. print(f.readline())# 一次读取一行内容
    3. print(f.readlines())
    4. f.close # 关闭文件

    4、with open

    自动关闭文件。

    语法:with open(name,mode,encoding)as f:

    例:

    1. with open("D:/save_date.txt","r",encoding="UTF-8") as f:
    2. for line in f:
    3. print(line)

    三、文件的写入

    write()

    语法:文件对象.write()

    直接调用write,内容并未真正写入文件,而是会积攒在内存中,称为缓冲区;

    当调用flush方法的时候,内容会真正写入文件。

    例:

    1. f = open("D:/save_date.txt","w",encoding="UTF-8")
    2. f.write("111")
    3. f.flush()
    4. f.close()

    四、seek()方法

    语法:文件对象.seek(offset,whence)

    参数offset表示文件指针移动的偏移量,可选参数whence表示从哪个位置移动文件指针:

    • whence=0,表示从文件起始位置移动
    • whence=1,表示从当前位置移动
    • whence=2,表示从文件结尾处移动

    whence的默认值是0,即文件指针默认从文件起始位置移动。因此seek(0)表示将文件指针移动到文件起始位置,seek(0,2)表示文件指针移动到文件结尾处。注意当以文本文件模式“t”打开文件时,只能从文件开头移动指针,即whence必须为0

    提示:汉字偏移量为2

    五、注意

    • 写入文件不说明编码格式则文件内容汉字乱码,而读文件说明编码格式报错
    • 写入文件不说明编码格式则文件内容汉字乱码,读文件也不说明编码格式正常读出
    • 写入文件说明编码格式则文件内容正常,读文件也不说明编码格式乱码读出
    • 写入文件说明编码格式则文件内容正常,而读文件说明编码格式正常读出
    • 手动创建文件输入内容,而读文件不说明编码格式则乱码读出
    • 手动创建文件输入内容,读文件说明编码格式则正常读出

    例:

    1. #手动创建2.txt,加编码格式正常读出
    2. file = "2.txt"
    3. f = open(file,'r',encoding="UTF-8")
    4. line = f.read()
    5. print(line)
    6. f.close()
    1. //写入文件没有说明编码格式,而读取文件说明了,则报错
    2. file = "3.txt"
    3. f = open(file,'w')
    4. f.write("我爱1")
    5. f.close()
    6. f = open(file,'r',encoding="UTF-8")
    7. line = f.read()
    8. print(line)
    9. f.close()

    报错内容:'utf-8' codec can't decode byte 0xce in position 0: invalid continuation byte 


  • 相关阅读:
    骑行运动耳机哪个好,列举五款适合在骑行过程中佩戴的耳机
    持续集成部署 - Jenkinsfile中单双引号的区别
    YOLO目标检测——红细胞数据集【(含对应voc、coco和yolo三种格式标签】
    resize2fs: New size too large to be expressed in 32 bits
    一篇博客带你学会JUC并发编程(后端必会、五万字笔记)
    excel中 将一列数字按照,分割开
    csp-s2020儒略日
    针不戳 腾讯开源GitHub星标125K微服务架构进阶宝典
    深入理解lambda的奥秘
    【机器学习300问】37、什么是迁移学习?
  • 原文地址:https://blog.csdn.net/Tir_zhang/article/details/126693261