python读写文件学习笔记

文章目录

介绍

  1. python中文件读写的内置函数,返回文件对象
  2. 使用普通方式打开文件需要使用close()方法手动关闭,使用with方式打开不需要
  3. 编码
    1. Windows(也跟使用的编辑软件有关)中普通文本默认使用ANSI编码(GBK),Linux中默认使用utf-8
    2. GBK兼容GB2312,GBK是在GB2312基础上发展起来的,它不仅包含了GB2312的所有字符,还扩展了更多的字符
  4. 这里主机介绍文件内容的读写操作,其它操作可参考内置模块:pathlib

语法

  1. 语法

    py 复制代码
    file = open(filename[,mode[,buffering]],[encoding])
  2. mode参数

    参数 如果不存在 解释
    r 报错 以只读模式打开文件。文件的指针将会放在文件的开头
    rb 报错 以二进制格式打开文件,并且采用只读模式。文件的指针将会放在文件的开头。一般用于非文本文件,如图片、声音等
    r+ 报错 打开文件后,可以读取文件内容,也可以写入新的内容覆盖原有内容(从文件开头进行覆盖)
    rb+ 报错 以二进制格式打开文件,并且采用读写模式。文件的指针将会放在文件的开头。一般用于非文本文件,如图片、声音等
    w 创建 以只写模式打开文件
    wb 创建 以二进制格式打开文件,并且采用只写模式。一般用于非文本文件,如图片、声音等
    w+ 创建 打开文件后,先清空原有内容,使其变为一个空的文件,对这个空文件有读写权限
    wb+ 创建 以二进制格式打开文件,并且采用读写模式。一般用于非文本文件,如图片、声音等
    a 创建 以追加模式打开一个文件。如果该文件已经存在,文件指针将放在文件的末尾(即新内容会被写入到已有内容之后),否则,创建新文件用于写入
    ab 创建 以二进制格式打开文件,并且采用追加模式。如果该文件已经存在,文件指针将放在文件的末尾(即新内容会被写入到已有内容之后),否则,创建新文件用于写入
    a+ 创建 以读写模式打开文件。如果该文件已经存在,文件指针将放在文件的末尾(即新内容会被写入到已有内容之后),否则,创建新文件用于读写
    ab+ 创建 以二进制格式打开文件,并且采用追加模式。如果该文件已经存在,文件指针将放在文件的末尾(即新内容会被写入到已有内容之后),否则,创建新文件用于读写
  3. buffering参数

    参数 解释
    0 不缓存
    1 缓存
    大于1 缓冲区的大小

使用with语句

  1. 使用普通方式打开文件需要手动关闭文件,而使用with不需要手动关闭文件

  2. 语法

    py 复制代码
    with expression as target:
        with-body
  3. expression为open函数,target为对象名称

常用方法和属性

  1. 文件对象方法属性表

    类型 字符 描述
    属性 closed 查看文件是否关闭,返回布尔值
    方法 close() 关闭文件
    方法 write(字符串) 向文件写入内容
    方法 flush() 将缓存内容写入文件
    方法 read(字符个数) 如果省略字符个数(英文和汉字都算1个字符)将读取全部内容,返回字符串类型,注意:打开文件的模式只能是:r或r+
    方法 readline() 读取一行,返回字符串类型,注意:打开文件的模式只能是:r或r+
    方法 readlins() 读取全部行,返回列表类型,注意:打开文件的模式只能是:r或r+
    方法 seek(开始位置) 文件内指针(简单理解为光标)位置操作,从0开始,字符计算方法跟编码方案有关

实例

写入文件实例

  1. 代码

    py 复制代码
    file = open('test6.txt','w',encoding='utf-8')
    file.write('python写入文件测试')
    file.close()

读取文件实例

  1. encoding='utf-8'为默认值,可以不写,如果是其他编码则需要指定

  2. 代码

    py 复制代码
    file = open('test6.txt',encoding='utf-8')
    con = file.read()
    file.close()
    print(con)

读取所有行实例

  1. 如果不使用循环,只能读取到第一行

  2. 返回列表类型,每个元素为一个字符串,即文件内的一行内容

  3. 代码

    py 复制代码
    with open('test6.txt',encoding='utf-8') as f:
        con = f.readlines()
    print(con)

逐行读取实例

  1. 适合文件较大,一次性读取所有,占用内存过多

  2. 如果不使用循环,只能读取到第一行

  3. 代码

    py 复制代码
    with open('test6.txt',encoding='utf-8') as f:
        while True:
            line = f.readline()
            if not line:
                break
            print(line)

一次读取整个文件实例

  1. 返回字符串类型,适合不是很大的文件

  2. 代码

    py 复制代码
    with open('test6.txt',encoding='utf-8') as f:
        con = f.read()
    print(con)
相关推荐
中小企业实战军师刘孙亮2 分钟前
快消纺织五金怎么融合?三大业态协同发展战略思路-佛山鼎策创局破局增长咨询
学习·面试·创业创新·制造·学习方法
编程大师哥5 分钟前
最高效的 IO 并发方案
linux·网络·python
Hello:CodeWorld6 分钟前
Dify 从入门到实战:部署、模型对接与企业级 AI 应用开发全教程
人工智能·python·架构·ai编程
Upsy-Daisy7 分钟前
Hermes Agent 学习笔记 04:工具调用系统,让 Agent 从“会说”变成“会做”
java·笔记·学习
楼田莉子9 分钟前
C++20新特性:协程
开发语言·c++·后端·学习·c++20
本地化文档10 分钟前
black-docs-l10n
python·github·gitcode·sphinx
Dream_ksw14 分钟前
Python 基础
开发语言·python
weixin_4280053019 分钟前
C#调用 AI学习从0开始-第2阶段(Function Calling+工具调用智能体)-第9天实战-实现计算器工具
开发语言·学习·c#·functioncalling·ai实现计算器工具
Deepoch20 分钟前
Deepoc VLA开发板:除草机器人的持续学习与协同作业系统
人工智能·学习·机器人·开发板·具身模型·deepoc
John_ToDebug20 分钟前
在 Windows 上搭建 Chromium 148 内核编译环境:一份实战笔记
chrome·经验分享·笔记