任何一种语言,文件的读写都是非常常见的。python的文件读写非常简单,仅仅一个函数open(file也可以,但是我不常用)。

先看看官网的解释:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
Open file and return a stream. Raise IOError upon failure.

常用打开模式:

r 只能读
r+ 可读可写,不会创建不存在的文件,从顶部开始写,会覆盖之前此位置的内容
w+ 可读可写,如果文件存在,则覆盖整个文件,不存在则创建
w 只能写,覆盖整个文件,不存在则创建
a 只能写,从文件底部添加内容 不存在则创建
a+ 可读可写 从文件顶部读取内容 从文件底部添加内容 不存在则创建

但是实验发现,这里的r+ 可读可写 不会创建不存在的文件 从顶部开始写 会覆盖之前此位置的内容不完整。

test.txt的原始文件如下:

早上好
您好
how are you?

如果我们在open文件后,没有进行任何读写,则从末尾加入

1 with open('test.txt', mode='r+', encoding='utf-8') as f:
2     f.writelines("北京")

这时文件变成

北京好
您好
how are you?

如果我们在写之前进行了读操作,则会在末尾加入文件

1 with open('test.txt', mode='r+', encoding='utf-8') as f:
2     f.read(1)
3     f.writelines("北京")

这时在文件的末尾加入了北京两个字,与我们读多少没有关系。作用上类似a+模式

早上好
您好
how are you?北京

注意:以r+模式处理文件,容易弄错内容,千万注意

如果以w+方式打开文件,写入文件后,文件被覆盖或重建,样例

1 with open('test.txt', mode='w+', encoding='utf-8') as f:
2     f.write("tianjin")
3     f.flush()
4     print(f.readlines())

得到空[]

with open('test.txt', mode='w+', encoding='utf-8') as f:f.writelines("天津")f.writelines('山东')f.flush()f.seek(0)print(f.readlines())

需要seek才能读取到刚刚写入的内容。

另外注意 写操作不会自动加入换行符

读的一行末尾会有换行操作,可以用''.strip()去掉换行符

with open('test.txt', mode='r', encoding='utf-8') as f:for line in f:print(line.strip()) 去掉换行

如果某个文件正在open,就只这时,文件被修改,正在读文件的句柄能读出修改的内容

1 import time
2 with open('test.txt', mode='r', encoding='utf-8') as f:
3     time.sleep(5)
4     for line in f:
5         print(line.strip())

在文件末尾增加文件时,我们的f能读取到最后新增的内容。如果修改已经读取行的内容,若不seek,则读取不到。

这特点能用户增量读取分析日志文件

转载于:https://www.cnblogs.com/yangshl/p/6285942.html

python3的文件读写模式相关推荐

  1. Python文件读写模式

    文件读写模式 值 描述 r 读取模式 w 写入模式 x 独占写入模式 a 附加模式 b 二进制模式(与其他模式结合使用) t 文本模式(默认值,与其他模式结合使用) + 读写模式(默认值,与其他模式结 ...

  2. python怎么读取中文文件-Python3 中文文件读写方法

    字符串在Python内部的表示是Unicode编码,因此,在做编码转换时,通常需要以Unicode作为中间编码,即先将其他编码的字符串解码(decode)成Unicode,再从Unicode编码(en ...

  3. C语言文件读写模式参数

    C语言文件读写模式参数 r: 以只读方式打开文件,该文件必须存在. r+: 以可读写方式打开文件,该文件必须存在. rb+: 读写打开一个二进制文件,只允许读写数据. rt+: 读写打开一个文本文件, ...

  4. python文件读取模式_day-2 python 文件读写模式r,r+,w,w+,a,a+的区别

    r+和w+都是可读可写,区别在于r+读文件时,不会覆盖之前的内容,之前的内容能够读出来:w+读时,会覆盖之前的内容:所以读文件时,用r或者r+ #读操作 r 1 filepath = 'aa.log' ...

  5. 文件操作模式 r+ w+ a+ 文件读写模式的区别

    r+ w+ a+ 这三个都是以读写模式打开文件,它们都可读可写,那么它们的区别在哪里呢? 首先,明显不同的是,a是以追加的模式写入. 为更加清晰,列出下表: r+ w+ a+ 文件不存在 不创建(打开 ...

  6. python读取文件r_python 文件读写模式r,r+,w,w+,a,a+的区别(附代码示例)

    如下表 模式 可做操作 若文件不存在 是否覆盖 r 只能读 报错 - r+ 可读可写 报错 是 w 只能写 创建 是 w+ 可读可写 创建 是 a 只能写 创建 否,追加写 a+ 可读可写 创建 否, ...

  7. 【Python 基础】Python 文件读写模式 mode

    with open('file', mode='r') as f:for line in f:data.append(ujson.loads(line)) 模式(mode) 描述 r 以只读方式打开文 ...

  8. python 文件读写模式r,r+,w,w+,a,a+的区别(附代码示例)

    模式 可做操作 若文件不存在 是否覆盖 r 只能读 报错 - r+ 可读可写 报错 是 w 只能写 创建 是 w+ 可读可写 创建 是 a 只能写 创建 否,追加写 a+ 可读可写 创建 否,追加写 ...

  9. python 文件读写模式

    区别 模式 可做操作 若文件不存在 是否覆盖 r 只能读 报错 - r+ 可读可写 报错 是 w 只能写 创建 是 w+ 可读可写 创建   是 a 只能写 创建 否,追加写 a+ 可读可写 创建 否 ...

最新文章

  1. zbb20180827 java获取字符串中所有汉字
  2. C#知识点总结系列:C# 数据结构
  3. sign check fail: check Sign and Data Fail!-错误处理
  4. python-办公自动化-索引-202002
  5. Django框架——状态保持(cookie、session)
  6. 当子元素用position:relative;时,父元素的overflow:hidden;在ie中失效的解决办法
  7. 一个电脑安装多个系统的几个办法
  8. 智能优化算法:引力搜索算法-附代码
  9. 2023考研王道数据结构知识梳理
  10. 【资源分享】分享十个历史版本的eclipse安装包
  11. ArcMap坐标系转换
  12. SC16IS750在STM32的应用
  13. 平面设计师okr_设计团队如何推进OKR,实现设计赋能?
  14. css 文字颜色渐变上到下,CSS 实现背景色渐变和文字颜色渐变
  15. 高密集型工业体系步履蹒跚
  16. 实现微信小程序开发的基本步骤
  17. 瞎琢磨先生のJava笔记之Java代码远程调用shell脚本
  18. Java亿级流量架构之网关设计思路
  19. 周迅是永远的精灵,不接受反驳
  20. predefined annotation

热门文章

  1. Java中的IO流(六)
  2. Nikitosh 和异或 —— 一道 trie 树的题用可持久化 trie 水 然后翻车了...
  3. 用onSaveInstanceState()方法保存Activity状态
  4. (转)script标签到底该放在哪里
  5. Jenkins - 持续集成环境搭建【转】
  6. php array_key_exists() 与 isset() 的区别
  7. 算法设计之0-1背包问题
  8. 一个七年程序员的经验
  9. Linux服务器性能分析
  10. PC,H5,APP的概念和区别