07_读写文件open(filename, mode, encoding=None)
读写文件open(filename, mode, encoding=None)
mode
mode | 权限 |
---|---|
r | 只读 |
w | 只写(会从头开始覆盖覆盖写当前文件内容) |
a | 追加写(从文件内容的末尾追加写内容,不会覆盖现有的内容) |
r+ | 读写(这里的写,也是从头覆盖写) |
b | 二进制模式 |
f.close()
在每次使用完文件过后,一定要是用f.close()
关闭文件,避免资源的浪费
写入文件
只写w
首先创建一个空的文本文件
写入指定内容
此时采用
w
模式(覆盖写)写入了两次内容f = open('workfile', 'w', encoding="utf-8")
f.write('hello python\n')
f.write('hello java\n')
f.write('hello c\n') f.close() f = open('workfile', 'w', encoding="utf-8")
f.write('hello python\n')
f.write('hello java\n')
f.write('hello c\n') f.close()
文件内容中之显示了一次写入的内容,因为第一次写入的内容被第二写入的内容所覆盖了
也可以再次写入不同的内容来验证这一现象
f = open('workfile', 'w', encoding='utf-8')
f.write('niaho ----') f.close()
f.write('niaho ----')
将上一次的内容全部覆盖,并写入新的数据
覆盖写:覆盖写只在将一个文件打开后,开始写入内容时,如果再次之前文件已经被打开的话,将为按照当前写入位置,继续写 入数据
追加写a
写入方式与只写相似,只是写入模式换为a
此时workfile
中的数据如下
f = open('workfile', 'a')
f.write('追加写的数据')
f.close()
追加写的数据会在原有数据的后面追加
读取文件
读取文件要在可读的模式下进行,即mode='r'
f.read(size)
使用
f.read(size)
可以读取文件,当省略size或者size为负数时,默认读取整个文件f = open('workfile', 'r', encoding='utf-8')
print(f.read()) f.close()
若已经读取过一次文件,在文件关闭前再次读取此文件再次读取此文件时,会返回
''
f = open('workfile', 'r', encoding='utf-8')
print(f.read())
print(f.read())
f.close()
在二进制模式下更能体现这一点
f = open('workfile', 'rb')
print(f.read())
print(f.read())
f.close()
当size的值为正整数时
size 取其他值时,读取并返回最多 size 个字符(文本模式)或 size 个字节(二进制模式)。如已到达文件末尾,
f.read()
返回空字符串(''
)f = open('workfile', 'r', encoding='utf-8')
print(f.read(10))
print(f.read(10))
print(f.read(10))
f.close()
f.readline()
f.readline()
从文件中读取单行数据;字符串末尾保留换行符(\n
),只有在文件不以换行符结尾时,文件的最后一行才会省略换行符。这种方式让返回值清晰明确;只要f.readline()
返回空字符串,就表示已经到达了文件末尾,空行使用'\n'
表示,该字符串只包含一个换行符。
将文件的内容更改为如下
使用
f.readline()
读取单行数据f = open('workfile', 'rb')
print(f.readline())
print(f.readline())
print(f.readline())
print(f.readline())
也可以使用循环读取内容
f = open('workfile', 'rb')
for i in f:
print(i)
f.close()
定位
f.tell()
返回整数,给出文件对象在文件中的当前位置,表示为二进制模式下时从文件开始的字节数,以及文本模式下的意义不明的数字。
f.seek(offset, whence)
可以改变文件对象的位置。通过向参考点添加 offset 计算位置;参考点由 whence 参数指定。 whence 值为 0 时,表示从文件开头计算,1 表示使用当前文件位置,2 表示使用文件末尾作为参考点。省略 whence 时,其默认值为 0,即使用文件开头作为参考点。
>>> f = open('workfile', 'rb+')
>>> f.write(b'0123456789abcdef')
16
>>> f.seek(5) # 定位到文件中的第 6 个字节
5
>>> f.read(1)
b'5'
>>> f.seek(-3, 2) # 定位到倒数第 3 个字节
13
>>> f.read(1)
b'd'
TOSTUDY
JSON
07_读写文件open(filename, mode, encoding=None)的更多相关文章
- Python读写文件乱码问题
对开发者来说,最恼人的问题之一莫过于读写文件的时候,由于编码千差万别,出现乱码问题.好难快速解决啊... 最近我也遇到了这样的问题,经研究,把大致的解决思路拿出来共享. 1. python中习惯首先声 ...
- C#读写文件总结
1.使用FileStream读写文件 文件头: using System; using System.Collections.Generic; using System.Text; using ...
- C# 之 读写文件
1.使用 FileStream 读写文件 添加命名空间引用: using System; using System.Collections.Generic; using System.Text; us ...
- python3.x 读写文件要使用UTF8编码的话需要。。
读写文件常遇到编码不正确的情况,都用UTF8读写文件就好了,在读写的时候加上编码格式:encoding='UTF-8'如下:with open(filename, 'r', encoding='UTF ...
- Python 3 学习笔记之——键盘输入和读写文件
1. 键盘输入 Python提供了 input() 内置函数从标准输入读入一行文本,默认的标准输入是键盘.input 可以接收一个 Python 表达式作为输入,并将运算结果返回. str = inp ...
- Python IO编程-读写文件
1.1给出规格化得地址字符串,这些字符串是经过转义的能直接在代码里使用的字符串 需要导入os模块 import os >>>os.path.join('user','bin','sp ...
- Python读写文件
Python读写文件1.open使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('t ...
- php中并发读写文件冲突的解决方案
在这里提供4种高并发读写文件的方案,各有优点,可以根据自己的情况解决php并发读写文件冲突的问题. 对于日IP不高或者说并发数不是很大的应用,一般不用考虑这些!用一般的文件操作方法完全没有问题.但如果 ...
- Inno Setup 如何读写文件
软件安装的实质就是拷贝,对于简单的打包当然不需要考虑修改某(配置)文件.通过inno修改文件的目的在于把安装时相关信息写入文件中,提供其它应用的读取,而这些信息也只能在安装时才能确定,比如安装用户选择 ...
- c# 高效读写文件
一.同步读写文件(在并发情况下不会发生文件被占用异常) static void Main(string[] args) { Parallel.For(0, 10000, e => { strin ...
随机推荐
- GienTech动态|入选软件和信息技术服务名牌企业;荣获城市数字化转型优秀案例;参加第四届深圳国际人工智能展
中电金信入选"2023第二届软件和信息技术服务名牌企业" 近日,中国电子信息行业联合会发布了"2023第二届软件和信息技术服务名牌企业"名单,中电金信入 ...
- 【机器学习】SVM(支持向量机)算法实验
(一)实验名称:SVM(支持向量机)算法实验 (二)实验目的: 学习支持向量机SVM的基本概念 了解核函数的基本概念 掌握使用scikit-learn API函数实现SVM算法 (三)实验内容:使用s ...
- 【JavaWeb】前后端分离SpringBoot项目快速排错指南
1 发起业务请求 打开浏览器开发者工具,同时显示网络(Internet)和控制台(console) 接着,清空控制台和网络的内容,如下图 然后,点击你的业务按钮,发起请求. 首先看控制台有没有报错信息 ...
- 性能测试 -- docker部署grafana
一.前提 1.安装好了docker 2.docker内 和 jmeter脚本 全都已经部署好了influxdb,并且数据采集等都正常 二.docker 部署 grafana 的操作步骤 1.下载 do ...
- 转载 mybatis-plus配置控制台打印完整带参数SQL语句
问题背景 通常我们开发的时候,需要联合控制台和Navicat/PLSQL等工具进行语句的拼接检查,如果只是输出了一堆???,那么将极大降低我们的效率.因此我们需要输出完整的SQL语句以便调试. Upd ...
- Qt编写可视化大屏电子看板系统19-横向柱状图
一.前言 横向柱状图的绘制这玩意当初还着实花费了一些时间,因为从v1版本开始,默认XY坐标轴是没有交换位置的处理的,也只有垂直的柱状图,要想换成横向的柱状图必须是自己拿到数据重新绘制,数据值的设置一般 ...
- Qt音视频开发35-Onvif图片参数
一.前言 视频中的图片的配置参数一般有亮度.饱和度.对比度.锐度等,以前一直以为这些需要通过厂家的私有协议SDK来设置才行,后面通过研究Onvif Device Manager 和 Onvif Dev ...
- 生产环境Sentinel改造实践(一):Sentinel核心概念
一.前言 本文主要是对sentinel-dashboard源码进行改造,用在生产环境保障其高可用,主要改造点如下: 接入nacos支持规则管理及推送 监控数据存入influxDb,后续可开发对应的监控 ...
- [转]快速搭建简单的LBS程序——地图服务
很多时候,我们的程序需要提供需要搭建基于位置的服务(LBS),本文这里简单的介绍一下其涉及的一些基本知识. 墨卡托投影 地图本身是一个三维图像,但在电脑上展示时,往往需要将其转换为二维的平面图形,需要 ...
- IM开发快速入门(一):什么是IM系统?
本文在编写时参考了博客作者"鹿呦呦"和在线课程"即时消息技术剖析与实战"的相关资料,一并表示感谢. 1.系列文章引言 IM系统看似简单(没错,很多土老板认为开发 ...