c++读二进制文件结束的时候总会异常_python专题文件操作
一 前言
本篇文章主要对文件操作进行说明,知识追寻者创作必属精品,读完本篇你将获得基础的文件操作能力,深入理解文件操作API,基础真的很重要,不管学什么知识,故看知识追寻者的专题系列真的很不错。
公众号:知识追寻者
知识追寻者(Inheriting the spirit of open source, Spreading technology knowledge;)
二 open函数介绍
2.1 open函数概览
open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
- file 可以是给定的文本文件或者是文件字符串形式的名称
- mode 模式是操作文件以何种方式打开,比如读,写模式,读取为二进制等;
- buffering 是缓存机制(可选参数),设置为0为关闭缓存;设置为1表示行缓存,必须是在文本模式下执行;设置值 大于1 表示固定值的块缓存;不给定参数,系统会设置默认缓存,通常二进制文件是固定大小的块缓存,大小为4096或者8192;
- encoding 表示设置编码或者解码,默认的编码解码是跟随平台,必须是文本模式下可执行;用户可以自定义,
- errors 可选操作,表示指定如何处理编码异常;如果设置为ignore,可能会造成数据丢失;
- newline 表示对换行的具体操作,比如 'n' , 'r' , 'nr',必须在文本模式下进行;
- closefd 如果设置会False 当文件关闭时,文件的描述会一直打开,造成内存泄漏;通常会在open方法前面加with解决此类问题,否则需要调用close()方法关闭句柄;
2.2 mode 模式介绍
基础模式如下,在不冲突的情况下可以对文件的模式进行自由组合,比如 wb表示以二进制文件形式打开文件进行写操作;
2.3 文件方法介绍
三 读文件操作
3.1 准备工作
在工程目录下的base目录文件夹下创建一个dir文件夹,专门用于存储文件;创建一个zszxz.txt 文件 内容如下
我以星辰送大海
我以盏杯敬明月
3.2 读取整个文件
- 指定文件路径path
- 指定模式r 为读操作
- 指定编码格式为utf-8
- 调用read()方法
path = "dirs/zszxz.txt"
with open(path, 'r', encoding='UTF-8') as file_obj:content = file_obj.read()print(content.rstrip())
输出结果
我以星辰送大海
我以盏杯敬明月
3.3读取单行
使用readline()方法会读取单行,对于整个文件需要进行多次读取;
path = "dirs/zszxz.txt"
with open(path, 'r', encoding='UTF-8') as file_obj:content_1 = file_obj.readline()print(content_1.rstrip())content_2 = file_obj.readline()print(content_2.rstrip())
输出结果
我以星辰送大海
我以盏杯敬明月
3.3 多行读取
- 使用readlines()方法返回一个列表
- 使用循环遍历读取
path = "dirs/zszxz.txt"
with open(path, 'r', encoding='UTF-8') as file_obj:lines = file_obj.readlines()for line in lines:print(line.rstrip())
输出结果
我以星辰送大海
我以盏杯敬明月
3.4 按行读取
直接对文件进行迭代,能简化代码,提高效率;
path = "dirs/zszxz.txt"
with open(path, 'r', encoding='UTF-8') as file_obj:for line in file_obj:print(line.rstrip())
四 写操作
- path 指定文件路径
- mode 模式为w 表示写入数据
- 执行write()方法
- 返回count为写如的字符数
写入全部数据
# -*- coding: utf-8 -*-path = "C:mydatageneratorzszxz.txt"
with open(path,'w',encoding='UTF-8') as file_obj:count = file_obj.write("happily reading the article of zszxz")print(count)
返回结果如下,说明写入了36个字符;
36
五 获取当前位置
- path 指定文件路径
- mode 模式为 r表示读
- 调用readline()方法 表示读取行
- 调用tell()方法获取读取文件当前位置
path = "dirs/zszxz.txt"
with open(path, 'r', encoding='UTF-8') as file_obj:line = file_obj.readline()position = file_obj.tell()print(position)print(line.rstrip())
输出结果
23
我以星辰送大海
c++读二进制文件结束的时候总会异常_python专题文件操作相关推荐
- ❤️学懂C语言文件操作读这篇就够了(万字总结,附习题)❤️
目录 一,写在前面 二,为什么使用文件 1,原因 2,数据流 3,缓冲区(Buffer) 4,C语言中带缓冲区的文件处理 5,文件类型 6,文件存取方式 三,什么是文件 1,程序文件 2,数据 ...
- c/c++入门教程 - 2.5 文件操作、fstream(write写文件、read读文件、ios::binary二进制文件读写)
目录 2.5 文件操作 2.5.1 文本文件 2.5.1.1 写文件 2.5.1.2 读文件 2.5.2 二进制文件 2.5.2.1 二进制写文件 2.5.2.2 二进制读文件 2.5 文件操作 程序 ...
- C++ 学习(15)文件操作、文件文件读与写操作、二进制文件读与写操作
程序运行时产生的数据者属于临时数据,程序一旦运行结束临时数据都会被释放.通过文件可以将数据持久化. C++ 文件操作 C++中对文件操作需要包含头文件<fstream> 文件类型分为两种: ...
- C++之文件操作探究(四):读文件——二进制文件
相关博文:C++之文件操作探究(一):写文件--文本文件 相关博文:C++之文件操作探究(二):读文件--文本文件 相关博文:C++之文件操作探究(三):写文件--二进制文件 相关博文:C++之文件操 ...
- 2018-06-12 python读二进制文件
python读二进制文件 http://blog.sina.com.cn/s/blog_4b780cbf0102xmu1.html 作者:幼稚的小石头
- 学会读懂traceback,处理Python异常
点击上方"Python学习开发",选择"加为星标" 第一时间关注Python技术干货! 正文共:11813 字 2 图 预计阅读时间: 30 分钟 原文:htt ...
- fread函数读二进制文件
fread函数可以读取二进制文件的数据,并将数据存入矩阵. 关于matlab操作文件的几个函数有文介绍:matlab文件操作fopen,fseek,fread,fclose等 针对 " 2) ...
- C++基础部分_C++文件操作_二进制文件的读操作---C++语言工作笔记079
然后我们再来看一下c++中的文件操作,如何来读取一个二进制文件,上一节我们写入了一个二进制文件,把一个person类对象写入到了一个person.txt文件中.然后这次我们把上一节,写入的person ...
- python怎么读文件后删去空格以行为单位进行排序-文件操作
day15回顾 迭代器 iter(iterable) 返回迭代器 next(iterator) 返回可迭代对象提供的数据,当没有数据时触发StopIteration异常通知 生成器: 两种: 生成器函 ...
最新文章
- 深入Java泛型(四):RxJava中泛型的使用分析
- SYSENTER——快速系统调用
- 改变libreOffice的Calc的背景颜色
- angular示例_用示例解释Angular动画
- python链表实现栈_python实现链表队列栈
- pytorch---在训练中动态的调整学习率
- 菜鸟学Linux 第079篇笔记 mysql备份lvm
- 如何取消恶心的chrome浏览器被360篡改劫持问题
- java实现求数组中元素第二大的元素
- 云电脑与远控软件有什么区别?如何选?
- android nfc MifareUltralight读写
- 弘辽科技:直通车引流逻辑。
- 6.3深度优先遍历和广度优先遍历
- 单片机晶振电路的设计与计算
- Unity 3D中实现敌人追踪
- 读书百客:《游终南山》赏析
- 2022茶艺师(初级)特种作业证考试题库及模拟考试
- 5G+智慧矿山系统如何降低开发成本
- 图论trainning-part-1 A. 最短路
- Matplotlib之cmap趣味调色
热门文章
- 52个有用的 Docker 工具
- 一场由过滤器Filter引发的血案
- Dynamic AX ERP 4.0 数据导出(上)
- Eclipse开发C/C++之使用技巧小结,写给新手
- OpenCV实践之路——人脸检测(C++/Python) 【转】
- Jenkins集成java非maven/ant项目的打包思路
- linux shell数组定义、元素获取及其长度获取
- 【收藏】Hbase2.x协处理器的使用
- Ansible PLaybook template 模板详解
- spark Docker镜像构建及push脚本