一 前言

本篇文章主要对文件操作进行说明,知识追寻者创作必属精品,读完本篇你将获得基础的文件操作能力,深入理解文件操作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)

  1. file 可以是给定的文本文件或者是文件字符串形式的名称
  2. mode 模式是操作文件以何种方式打开,比如读,写模式,读取为二进制等;
  3. buffering 是缓存机制(可选参数),设置为0为关闭缓存;设置为1表示行缓存,必须是在文本模式下执行;设置值 大于1 表示固定值的块缓存;不给定参数,系统会设置默认缓存,通常二进制文件是固定大小的块缓存,大小为4096或者8192;
  4. encoding 表示设置编码或者解码,默认的编码解码是跟随平台,必须是文本模式下可执行;用户可以自定义,
  5. errors 可选操作,表示指定如何处理编码异常;如果设置为ignore,可能会造成数据丢失;
  6. newline 表示对换行的具体操作,比如 'n' , 'r' , 'nr',必须在文本模式下进行;
  7. closefd 如果设置会False 当文件关闭时,文件的描述会一直打开,造成内存泄漏;通常会在open方法前面加with解决此类问题,否则需要调用close()方法关闭句柄;

2.2 mode 模式介绍

基础模式如下,在不冲突的情况下可以对文件的模式进行自由组合,比如 wb表示以二进制文件形式打开文件进行写操作;

2.3 文件方法介绍

三 读文件操作

3.1 准备工作

在工程目录下的base目录文件夹下创建一个dir文件夹,专门用于存储文件;创建一个zszxz.txt 文件 内容如下

我以星辰送大海
我以盏杯敬明月

3.2 读取整个文件

  1. 指定文件路径path
  2. 指定模式r 为读操作
  3. 指定编码格式为utf-8
  4. 调用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 多行读取

  1. 使用readlines()方法返回一个列表
  2. 使用循环遍历读取
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())

四 写操作

  1. path 指定文件路径
  2. mode 模式为w 表示写入数据
  3. 执行write()方法
  4. 返回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

五 获取当前位置

  1. path 指定文件路径
  2. mode 模式为 r表示读
  3. 调用readline()方法 表示读取行
  4. 调用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专题文件操作相关推荐

  1. ❤️学懂C语言文件操作读这篇就够了(万字总结,附习题)❤️

    目录 ​​​ 一,写在前面 二,为什么使用文件 1,原因 2,数据流 3,缓冲区(Buffer) 4,C语言中带缓冲区的文件处理 5,文件类型 6,文件存取方式 三,什么是文件 1,程序文件 2,数据 ...

  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 文件操作 程序 ...

  3. C++ 学习(15)文件操作、文件文件读与写操作、二进制文件读与写操作

    程序运行时产生的数据者属于临时数据,程序一旦运行结束临时数据都会被释放.通过文件可以将数据持久化. C++ 文件操作 C++中对文件操作需要包含头文件<fstream> 文件类型分为两种: ...

  4. C++之文件操作探究(四):读文件——二进制文件

    相关博文:C++之文件操作探究(一):写文件--文本文件 相关博文:C++之文件操作探究(二):读文件--文本文件 相关博文:C++之文件操作探究(三):写文件--二进制文件 相关博文:C++之文件操 ...

  5. 2018-06-12 python读二进制文件

    python读二进制文件 http://blog.sina.com.cn/s/blog_4b780cbf0102xmu1.html 作者:幼稚的小石头

  6. 学会读懂traceback,处理Python异常

    点击上方"Python学习开发",选择"加为星标" 第一时间关注Python技术干货! 正文共:11813 字 2 图 预计阅读时间: 30 分钟 原文:htt ...

  7. fread函数读二进制文件

    fread函数可以读取二进制文件的数据,并将数据存入矩阵. 关于matlab操作文件的几个函数有文介绍:matlab文件操作fopen,fseek,fread,fclose等 针对 " 2) ...

  8. C++基础部分_C++文件操作_二进制文件的读操作---C++语言工作笔记079

    然后我们再来看一下c++中的文件操作,如何来读取一个二进制文件,上一节我们写入了一个二进制文件,把一个person类对象写入到了一个person.txt文件中.然后这次我们把上一节,写入的person ...

  9. python怎么读文件后删去空格以行为单位进行排序-文件操作

    day15回顾 迭代器 iter(iterable) 返回迭代器 next(iterator) 返回可迭代对象提供的数据,当没有数据时触发StopIteration异常通知 生成器: 两种: 生成器函 ...

最新文章

  1. 深入Java泛型(四):RxJava中泛型的使用分析
  2. SYSENTER——快速系统调用
  3. 改变libreOffice的Calc的背景颜色
  4. angular示例_用示例解释Angular动画
  5. python链表实现栈_python实现链表队列栈
  6. pytorch---在训练中动态的调整学习率
  7. 菜鸟学Linux 第079篇笔记 mysql备份lvm
  8. 如何取消恶心的chrome浏览器被360篡改劫持问题
  9. java实现求数组中元素第二大的元素
  10. 云电脑与远控软件有什么区别?如何选?
  11. android nfc MifareUltralight读写
  12. 弘辽科技:直通车引流逻辑。
  13. 6.3深度优先遍历和广度优先遍历
  14. 单片机晶振电路的设计与计算
  15. Unity 3D中实现敌人追踪
  16. 读书百客:《游终南山》赏析
  17. 2022茶艺师(初级)特种作业证考试题库及模拟考试
  18. 5G+智慧矿山系统如何降低开发成本
  19. 图论trainning-part-1 A. 最短路
  20. Matplotlib之cmap趣味调色

热门文章

  1. 52个有用的 Docker 工具
  2. 一场由过滤器Filter引发的血案
  3. Dynamic AX ERP 4.0 数据导出(上)
  4. Eclipse开发C/C++之使用技巧小结,写给新手
  5. OpenCV实践之路——人脸检测(C++/Python) 【转】
  6. Jenkins集成java非maven/ant项目的打包思路
  7. linux shell数组定义、元素获取及其长度获取
  8. 【收藏】Hbase2.x协处理器的使用
  9. Ansible PLaybook template 模板详解
  10. spark Docker镜像构建及push脚本