04----python入门----文件处理
一、大致介绍
我们在计算机上进行的操作,归根结底是对文件的操作,其实质是由操作系统发送请求,将用户或者应用程序对文件读写操作转换成具体的硬盘指令。
众所周知,内存中的数据是无法永久保存的。在计算机硬件中,能长期保存数据的只有计算机硬盘。因此,对文件的操作的实质是对硬盘的操作。
以下,我们将探讨如何用python实现对文件的具体操作。
二、具体操作流程
首先,对文件的操作步骤简略的可以分为三个步骤:
① 打开文件并将其赋值给一个变量,类似c语言内的文件指针。
② 通过对变量的操作实现对内存中的数据的增删改。
③关闭文件。
文件打开
语法:
open(file, mode='r')
#简略的
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
#完整的
参数说明:
- file: 必需,文件路径(相对或者绝对路径)
- mode: 可选,文件打开模式
- buffering: 设置缓冲
- encoding: 一般使用utf8,默认的是系统的编码模式,不是编译器的
- errors: 报错级别
- newline: 区分换行符
- closefd: 传入的file参数类型
mode参数对应表
t | 文本模式 (默认)。 |
x | 写模式,新建一个文件,如果该文件已存在则会报错。 |
b | 二进制模式。 |
+ | 打开一个文件进行更新(可读可写)。 |
U | 通用换行模式(Python 3 不支持)。 |
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
相关注意点:
1. 打开文件的模式有(默认为文本模式):
r ,只读模式 #【默认模式,文件必须存在,不存在则抛出异常】
w,只写模式 #【不可读;不存在则创建;存在则清空内容】
a, 之追加写模式 #【不可读;不存在则创建;存在则只追加内容】
2. 对于非文本文件,我们只能使用b模式(打开时不用指定encoding)
"b"表示以字节的方式操作,而所有文件也都是以字节的形式存储的
使用这种模式无需考虑文本文件的字符编码、图片文件的jgp格式、视频文件的avi格式
以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码
3. 在Windows环境下,python的换行符为 \r\n ,在Linux下换行符为 \n
为了统一起见,显示的是 \n ,若要显示 原样,可以在打开文件时在open()函数中指定 newline = ' '
文件操作
方法1:f.flush() 作用:来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区
方法2:f.readable() 作用:判断文件是否可读
方法3:f.writable() 作用:判断文件是否可读
方法4:f.read() 作用 :从文件读取指定的字节数,如果为给定或为负则读取所有
方法5:f.readline() 作用:从文件读取整行,包括\n,光标移动到第二行首部;如果指定了一个非负参数,则返回指定大小的字节数
方法6:f.readlines() 作用:从文件读取所有行(直到结束符EOF),并返回一个相应的列表
方法7:f.write() 作用:向文件写入指定的字符串,在文件关闭前或缓冲区刷新前无法在文件中看到相关内容
针对文本文件,需要自己写换行符;在向二进制文件中写数据时,需要指定编码方式
如: f.write('1111\n222\n'.encode('utf-8'))
方法8:f.writelines() 作用:向文件中写入可迭代对象,在二进制文件中写数据时,需要指定编码方式
如: f.writelines([bytes('333\n',encoding='utf-8'),'444\n'.encode('utf-8')])
方法9:f.truncate() 作用:从文件的首行首字节开始截断,截断文件为 size 个字节,文件的打开形式必须是可写;
截断之后 V 后面的所有字节被删除,其中 Widnows 系统下的换行代表2个字节大小。
语法: 参数:size,截断文件为 size 字节
fileObject.truncate( [ size ])
光标移动
seek() 方法用于移动文件读取指针到指定位置。
tell() 方法用于明确当前光标位置
语法:
fileObject.seek(offset[, whence])
参数:
offset -- 开始的偏移量,也就是代表需要移动偏移的字节数,如果是负数表示从倒数第几位开始。
whence:可选,默认值为 0。给 offset 定义一个参数,表示要从哪个位置开始偏移;
0 代表从文件开头开始算起,1 代表从当前位置开始算起,2 代表从文件末尾算起。
返回值:
如果操作成功,则返回新的文件位置,如果操作失败,则函数返回 -1。
实例:
>>> f = open('workfile', 'rb+')
>>> f.write(b'0123456789abcdef')
16
>>> f.seek(5) # 移动到文件的第六个字节
5
>>> f.read(1)
b'5'
>>> f.seek(-3, 2) # 移动到文件倒数第三个字节
13
>>> f.read(1)
b'd'
注意:
一、 打开一个文件包含两部分资源:操作系统级打开的文件+应用程序的变量。
在操作完毕一个文件时,必须把与该文件的这两部分资源一个不落地回收,回收方法为:
f.close() #回收操作系统级打开的文件
二、 f=open(...)是由操作系统打开文件,如果没有为open指定编码,那么打开文件的默认编码由系统决定,
操作系统会用自己的默认编码去打开文件,在windows下是 gbk,在Linux下是utf-8。
04----python入门----文件处理的更多相关文章
- Python入门—文件读写
文件读写的基本流程: #1.打开文件#2.读写文件#3.关闭文件 f = open('文件读写',encoding='utf-8') #打开文件,并赋值给f,encoding='utf-8'让中文可以 ...
- Python入门-文件操作
文件读取f = open('D:/工作日常/学生空姐模特护士联系方式.txt', 'r', encoding=‘utf-8’)f.read()f.close()解释file='D:/工作日常/学生空姐 ...
- python入门-文件
1 读取文件 with open('1.txt') as file_ojbect: contents = file_ojbect.read() print(contents.rstrip()) wit ...
- 04 . Python入门之条件语句
一. Python条件语句 Python条件语句是通过一条或多条语句执行结果(True或False)来决定执行的代码块. 可以通过下图简单了解语句的执行过程 Python程序语言指定任何非0和非空(n ...
- 04 Python入门学习-流程控制(if else elif while for)
一:流程控制if 语法一: if 条件: code1 code2 code3 ... age = 20 height = 170 weight = 60 sex = 'female' is_beaut ...
- python入门(5)使用文件编辑器编写代码并保存执行
python入门(5)使用文件编辑器编写代码并保存执行 两款文本编辑器: 一个是Sublime Text,免费使用,但是不付费会弹出提示框: 一个是Notepad++,免费使用,有中文界面: 请注意, ...
- python入门学习:9.文件和异常
python入门学习:9.文件和异常 关键点:文件.异常 9.1 从文件中读取数据9.2 写入文件9.3 异常9.4 存储数据 9.1 从文件中读取数据 9.1.1 读取整个文件 首先创建一个pi_ ...
- Python 入门基础6 --字符编码、文件操作1
今日内容: 1.字符编码 2.字符与字节 3.文件操作 一.字符编码 了解: cpu:将数据渲染给用户 内存:临时存放数据,断电消失 硬盘:永久存放数据,断电后不消失 1.1 什么是编码? 人类能够识 ...
- Python 入门学习(贰)文件/文件夹正则表达式批量重命名工具
基于 Udacity 的 Python 入门课程 Programming Foundations with Python 基于 Python 2.7 思路 Project 2 是一个去除文件名中所有数 ...
- Python入门篇-文件操作
Python入门篇-文件操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.文件IO常用操作 open:打开 read:读取 write:写入 close:关闭 readlin ...
随机推荐
- Codeforces Round #658 (Div. 2) C1. Prefix Flip (Easy Version) (构造)
题意:给你两个长度为\(n\)的01串\(s\)和\(t\),可以选择\(s\)的前几位,取反然后反转,保证\(s\)总能通过不超过\(3n\)的操作得到\(t\),输出变换总数,和每次变换的位置. ...
- haut-1282 ykc想吃好吃的
1282: ykc想吃好吃的 时间限制: 1 秒 内存限制: 128 MB提交: 706 解决: 89提交 状态 题目描述 一天,ykc在学校闲的无聊,于是决定上街买点吃的,ykc很懒,本来就不是 ...
- c# 类(4)
原文链接:https://csharp.net-tutorials.com/classes/visibility/ 可见性 Visibility 可见性 控制的是 访问权限的问题.最常见的就是priv ...
- 2019南昌网络赛H The Nth Item(二阶线性数列递推 + 广义斐波那契循环节 + 分段打表)题解
题意: 传送门 已知\(F(n)=3F(n-1)+2F(n-2) \mod 998244353,F(0)=0,F(1)=1\),给出初始的\(n_1\)和询问次数\(q\),设每一次的答案\(a_i= ...
- SPOJ PHRASES Relevant Phrases of Annihilation(后缀数组 + 二分)题解
题意: 给\(n\)个串,要你求出一个最长子串\(A\),\(A\)在每个字串至少都出现\(2\)次且不覆盖,问\(A\)最长长度是多少 思路: 后缀数组处理完之后,二分这个长度,可以\(O(n)\) ...
- u-boot 移植 --->7、u-bootl流程粗线条梳理
通过前面的调试了解到s5pv210这个芯片的启动流程是需要将u-boot分为两部分的分别为SPL和u-boot.这里我使用网上的方式不直接使用u-boot的SPL连接脚本单独生成SPL的image而是 ...
- 图解 git workflow
图解 git workflow 图解 git 工作流 git-flow https://www.git-tower.com/learn/git/ebook/cn/command-line/advanc ...
- CSS & Architecture
CSS & Architecture https://sass-guidelin.es/#architecture https://sass-guidelin.es/#the-7-1-patt ...
- Web 前端必备的各种跨域方式汇总
Web 前端必备的各种跨域方式汇总 跨域方式汇总 同源策略 协议相同 + 域名相同 + 端口相同 https://www.xgqfrms.xyz/index.html https://www.xgqf ...
- xcode upgrade & git bug
xcode upgrade & git bug ➜ op-static git checkout feature/select-seat-system Agreeing to the Xcod ...