python3的文件读写模式
任何一种语言,文件的读写都是非常常见的。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文件后,没有进行任何读写,则从末尾加入
with open('test.txt', mode='r+', encoding='utf-8') as f:
f.writelines("北京")
这时文件变成
北京好
您好
how are you?
如果我们在写之前进行了读操作,则会在末尾加入文件
with open('test.txt', mode='r+', encoding='utf-8') as f:
f.read(1)
f.writelines("北京")
这时在文件的末尾加入了北京两个字,与我们读多少没有关系。作用上类似a+模式
早上好
您好
how are you?北京
注意:以r+模式处理文件,容易弄错内容,千万注意
如果以w+方式打开文件,写入文件后,文件被覆盖或重建,样例
with open('test.txt', mode='w+', encoding='utf-8') as f:
f.write("tianjin")
f.flush()
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,就只这时,文件被修改,正在读文件的句柄能读出修改的内容
import time
with open('test.txt', mode='r', encoding='utf-8') as f:
time.sleep(5)
for line in f:
print(line.strip())
在文件末尾增加文件时,我们的f能读取到最后新增的内容。如果修改已经读取行的内容,若不seek,则读取不到。
这特点能用户增量读取分析日志文件
python3的文件读写模式的更多相关文章
- Python3:文件读写
Python3:文件读写 open f = open('filename','r') # 读模式 f = open('filename','w') # 写模式 f = open('filename', ...
- python文件读写模式 --- r,w,a,r+,w+,a+,rb,wb
要了解文件读写模式,需要了解几种模式的区别,以及对应指针 r : 读取文件,若文件不存在则会报错 w: 写入文件,若文件不存在则会先创建再写入,会覆盖原文件 a : 写入文件,若文件不存在则会先创建再 ...
- python3:文件读写+with open as语句
转载请表明出处:https://www.cnblogs.com/shapeL/p/9141238.html 前提:文中例子介绍test.json内容: hello 我们 326342 1.文件读取 ( ...
- 【C++】小心使用文件读写模式:回车('\r') 换行('\n')问题的一次纠结经历
原来没有仔细注意C++读写文件的二进制模式和文本模式,这次吃了大亏.(平台:windows VS2012) BUG出现: 写了一个程序A,生成一个文本文件F保存在本地,然后用程序B读取此文件计算MD ...
- python3学习--文件读写
这一篇我们来看文件读写操作. 打开和创建文件主要是open()函数: f = open('filename','r') # 读模式 f = open('filename','w') # 写模式 f = ...
- python3:文件读写+with open as语句(转)
读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...
- Python3之文件读写操作详解
文件操作的步骤: 打开文件 -> 操作文件 -> 关闭文件 切记:最后要关闭文件(否则可能会有意想不到的结果) 打开文件 文件句柄 = open('文件路径', '模式') 指定文件编码 ...
- python 文件读写模式r,r+,w,w+,a,a+的区别(附代码示例)
如下表 模式 可做操作 若文件不存在 是否覆盖 r 只能读 报错 - r+ 可读可写 报错 是 w 只能写 创建 是 w+ 可读可写 创建 是 a 只能写 创建 否,追加写 a+ 可读可写 创建 ...
- python 文件读写模式区别,以及如何边写入边保存flush()
如表: 模式 可做操作 若文件不存在 是否覆盖 r 只能读 报错 - r+ 可读可写 报错 是 w 只能写 创建 是 w+ 可读可写 创建 是 a 只能写 创建 否,追加写 a+ 可读可写 创建 否, ...
随机推荐
- 【SSRS】入门篇(六) -- 分组和总计
原文:[SSRS]入门篇(六) -- 分组和总计 通过[SSRS]入门篇(五) -- 设置报表格式的设计,一份简单格式的报表已产生,如下图: 这节来说说分组和总计: 根据日期.订单对数据进行分组 添加 ...
- 【转】在PC上测试移动端网站和模拟手机浏览器的5大方法
查了很多资料,尝试了大部分方法,下面将这一天的努力总结下分享给大家,也让大家免去看那么多文章,以下介绍的方法,都是本人亲自测试成功的方法,测试环境winxp. 一.Chrome*浏览器 chrome模 ...
- .NET Framework和C#版本历史概览
发布日期 .Net版本 C#版本 CLR版本 开发工具 功能介绍 2002 1.0 1.0 初始版本 Visual Studio .Net 初始版本 .NET框架结构,详见: 2003 1.1 ...
- 并行编程之PLINQ
并行编程之PLINQ 并行 LINQ (PLINQ) 是 LINQ 模式的并行实现.PLINQ 的主要用途是通过在多核计算机上以并行方式执行查询委托来加快 LINQ to Objects 查询的执行速 ...
- Web应用架构的新趋势
系统架构:Web应用架构的新趋势---前端和后端分离的一点想法 最近研究servlet,看书时候书里讲到了c/s架构到b/s架构的演变,讲servlet的书都很老了,现在的b/s架构已经不是几年前 ...
- 对student进行增删改
drop package TechEd_pkg_Student; CREATE OR REPLACE PACKAGE TechEd_pkg_Student AS FUNCTION F_CREATE(p ...
- iOS基础 - UITextField
一.UITextField 1.常见属性 @property(nonatomic,retain) UIView *leftView; // 设置文本框左边显示什么控件,可以让文本框的内容往右边挪动 @ ...
- Intellij Idea/Webstorm/Phpstorm
Intellij Idea/Webstorm/Phpstorm 的高效快捷键 1. shift + F6可以理解为F2的豪华重量版,不但可以重命名文件名,而且可以命名函数名,函数名可以搜索引用的文 ...
- Web API 2
Asp.Net Web API 2 官网菜鸟学习系列导航[持续更新中] 前言 本来一直参见于微软官网进行学习的, 官网网址http://www.asp.net/web-api.出于自己想锻炼一下学 ...
- SVN merge
SVN merge的主干,分支的相互合并操作 SVN merge的主干,分支的相互合并操作 本文只研究了 在本地如何进行主干,分支的相互合并 的操作:从主干到分支,从分支到主干. 本地客户端工具是 ...