03-Python文件操作
Python文件操作基本流程
用python如何操作一个文件呢,基本上可以分为三个步骤:
1、打开文件。
2、操作文件。
3、关闭文件。
#1、打开文件,得到文件句柄并赋值给一个变量。
f=open('./file.txt',mode='r',encoding='utf-8')
2、通过句柄对文件进行操作。 c=f.read() print(c)
#3、关闭文件 f.close()
代码解释:
f:就是一个变量,它也被称为文件的句柄。
open():是python打开文件的一个函数方法。
mode:定义我们的操作方法,r为只读
enconding:声明打开文件使用的编码本,文本用什么编码保存,就用什么编码打开。
f.read:操作文件,比如读取、写内容等,必须通过文件句柄进行操作。
close():关闭文件句柄
文件操作常用方法
文件操作:读,r模式
以只读的方式打开文件,文件的指针会放在文件的开头,如果不设置模式,这个是默认模式。
f=open('file.txt',mode='r',encoding='utf-8') c=f.read() print(c) f.close()
read()
read()文件中的内容全部被读取出来,弊端:如果文件太大就会占很懂得内存,导致内存崩溃。
read(n)
read(n)在r模式下,n按照字符读取。
readline()
readline()每次只读取一行,readline()读取出来得数据在后面都有一个\n
readlines()
readlines()返回一个列表,列表里的每个元素是原文件的没一行,如果文件太大,占内存,容易崩溃。
以上的几种方法都不太好,因为文件过大,会导致内存不够,程序崩溃,我们可以用以下的方法来读取:
for循环读取
可以通过for循环读取,文件句柄是一个迭代器,他的特点就是每次循环旨在内存中占一行的数据,非常节省内存。
rb模式
rb模式,以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头,带b的都是以二进制的格式操作文件,他们主要是操作非文字的文件,如:图片,音频,视频等,该模式不用声明编码方式。
f = open('mm2.jpg', mode='rb') c=f.read() print(c) f.close()
文件操作:写
写,就是在文件中写入内容,这里也有四
w模式
如果文件不存在,那么它会先创建文件,然后再写入内容
如果文件存在,会先清除文件的内容,再写入。
wb模式
wb模式,以二进制格式打开一个文件,只用于写入,如果文件存在,就清除原有内容,重新写入,如果文件不存在,就创建文件再写入,该模式一般用于非文本文件,如:图片、音频、视频等。
文件操作:追加
追加就是再文件中追加内容,它也有四种模式:a,ab,a+,a+b
a模式
打开一个文件用于追加,如果文件存在,文件指针放在文件的结尾,也就是说新的内容会写入到已有的内容之后。如果该文件不存在,创建新的文件再写入。
文件操作:其他模式
带+号的模式,+就是加一个功能,比如r模式是只读模式,在这种模式下,文件句柄只能进行类似read的只读操作,而不能进行write写的操作。所以我们想让这个文件句柄既可以进行读的操作,又可以进行写的操作,这个就是+模式:r+读写模式,w+写读模式,a+写读模式,r+b以byte类型的读写模式。
#1. 打开文件的模式有(默认为文本模式): r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】 w,只写模式【不可读;不存在则创建;存在则清空内容】 a, 只追加写模式【不可读;不存在则创建;存在则只追加内容】 #2. 对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jgp格式、视频文件的avi格式) rb wb ab 注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码 #3,‘+’模式(就是增加了一个功能) r+, 读写【可读,可写】 w+,写读【可写,可读】 a+, 写读【可写,可读】 #4,以bytes类型操作的读写,写读,写读模式 r+b, 读写【可读,可写】 w+b,写读【可写,可读】 a+b, 写读【可写,可读】
r+模式
r+用于打开一个文件用于读写,文件的指针默认会放在文件内容结尾追加
原文地址:https://www.cnblogs.com/xdmz/p/15213629.html
- spring boot + embed tomcat + standalone jar的内存泄露问题
- 树莓派:设置与软件安装
- spring-boot 速成(11) - 单元测试
- OOAD-设计模式(四)结构型模式之适配器、装饰器、代理模式
- 2018年智能家居行业趋势 写在2017年关键词里
- 树莓派与arduino通信
- process information unavailable 的解决办法
- JS魔法堂:再识IE的内存泄露
- 给树莓派安装中文字库
- Hadoop(十七)之MapReduce作业配置与Mapper和Reducer类
- Design Pattern: Observer Pattern
- Hadoop(十六)之使用Combiner优化MapReduce
- ActiveMQ笔记(6):消息延时投递
- CentOS 安装 Maven
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- grpc调用主要流程分析(一)
- Array - 42. Trapping Rain Water Hard
- Go modules 简介
- Spring事务的传播行为
- String - 71. Simplify Path
- 性能测试工具——wrk
- String - 67. Add Binary
- Math - 50. Pow(x, n)
- String - 44. Wildcard Matching
- DFS&BFS - 37. Sudoku Solver
- Array - 36. Valid Sudoku
- Array - 57. Insert Interval
- Binary Search - 378. Kth Smallest Element in a Sorted Matrix
- Array - 59. Spiral Matrix II
- Array - 54. Spiral Matrix