python进阶(4)文件操作
文件操作
文件操作主要包括对文件内容的读写操作,这些操作是通过文件对象实现的,通过文件对象可以读写文本文件和二进制文件
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
open()
函数共有8个参数,其中参数file和mode是最为常用的,其他参数一般情况下很少使用,下面分别说一下这些参数的含义
1.file参数
file参数是要打开的文件,可以是字符串或整数。如果file是字符串表示文件名,文件名可以是相对当前目录的路径,也可以是绝对路径;如果file是整数表示文件描述符,文件描述符指向一个已经打开的文件
2.mode参数
设置打开模式,二进制文件设置rb,wb,xb,ab,如果是文本文件,则设置r,w,x,a
- r:只读模式打开文件(默认)
- w:写入模式打开文件,会覆盖已经存在的文件
- x:独占创建模式,文件不存在时创建并以写入模式打开,如果文件已存在则抛出异常
- a:追加模式,如果文件存在,则写入时内容追加到文件末尾
- b:二进制模式
- +:更新模式
- t:文本模式(默认)
3.buffering参数
buffering是设置缓冲区策略,默认值为-1,当buffering=-1时系统会自动设置缓冲区,通常是4096或8192字节;当buffering=0时关闭缓冲区,关闭缓冲区时数据直接写入文件中,这种模式主要用于二进制文件的写入操作;当buffering>0时,buffering用来设置缓冲区字节大小
4.encoding
设置文件编码
5.errors
用来指定编码发生错误时如何处理
6.newline
用来设置换行模式
文本文件读写
- read(size=-1):从文件中读取字符串,size限制最多读取的字符数,size=-1时没有限制,读取全部内容
- redline(size=-1):读取到换行符或文件尾并返回单行字符串,如果已经到文件尾,则返回一个空字符串,size是限制读取的字符数,size=-1时没有限制
- readlines(hint=-1):读取文件数据到一个字符串列表中,每一个行数据是列表的一个元素,hint是限制读取的行数,hint=-1时没有限制
- write(s):将字符串s写入文件,并返回写入的字符数
- writelines(lines):向文件中写入一个列表,不添加行分隔符,因此通常为每一行末尾提供行分隔符
- flush():刷新写缓冲区,数据会写入到文件中
二进制文件读写
- read(size=-1):从文件中读取字节,size限制最多读取的字节数,size=-1时没有限制,读取全部字节
- redline(size=-1):从文件中读取并返回一行,size是限制读取的字节数,size=-1时没有限制
- readlines(hint=-1):读取文件数据到一个列表中,每一个行数据是列表的一个元素,hint是限制读取的行数,hint=-1时没有限制
- write(s):写入b字节,并返回写入的字符数
- writelines(lines):向文件中写入一个列表,不添加行分隔符,因此通常为每一行末尾提供行分隔符
- flush():刷新写缓冲区,数据会写入到文件中
os模块
Python对文件的操作是通过文件对象实现的,如删除文件、修改文件名,创建目录,删除目录和遍历目录,可以通过Python的os模块实现
- os.rename(src, dst):修改文件名,src是源文件,dst是目标文件,它们都可以是相对路径或者绝对路径
- os.remove(path):删除path所指的文件,如果path是目录,则会引发OSError
- os.mkdir(path):创建path所指的目录,如果目录已存在,则会引发FileExistsError
- os.rmdir(path):删除path所指的目录,如果目录非空,则会引发OSError
- os.walk(top):遍历top所指的目录树,自顶向下遍历目录树,返回值是一个三元组(目录路径,目录名列表,文件名列表)
- os.listdir(dir):列出指定目录中的文件和子目录
常用的属性有以下两种 - os.curdir属性:获得当前目录
- os.pardir属性:获得当前父目录
os.path模块
- os.path.abspath(path):返回path的绝对路径
- os.path.basename(path):返回路径的基础名部分,如果path是指向一个文件,则返回文件名,如果path指向的是一个目录,则返回最后目录名
- os.path.dirname(path):返回path路径中目录部分
- os.path.exists(path):判断path文件是否存在
- os.path.isfile(path):如果path是文件,则返回True
- os.path.isdir(path):如果path是目录,则返回True
- os.path.getatime(path):返回最后一次的访问时间,返回值是一个UNIX的时间戳,如果文件不存在或无法访问,则引发OSError
- os.path.getmtime(path):返回最后修改时间,返回值是一个UNIX的时间戳,如果文件不存在或无法访问,则引发OSError
- os.path.getctime(path):返回创建时间,返回值是一个UNIX时间戳,如果文件不存在或无法访问,则引发OSError
- os.path.getsize(path):返回文件大小,以字节为单位,如果文件不存在或无法访问,则引发OSError
python进阶(4)文件操作的更多相关文章
- Python的高级文件操作(shutil模块)
Python的高级文件操作(shutil模块) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果让我们用python的文件处理来进行文件拷贝,想必很多小伙伴的思路是:使用打开2个 ...
- python os&shutil 文件操作
python os&shutil 文件操作 # os 模块 os.sep 可以取代操作系统特定的路径分隔符.windows下为 '\\' os.name 字符串指示你正在使用的平台.比如对于W ...
- python 历险记(三)— python 的常用文件操作
目录 前言 文件 什么是文件? 如何在 python 中打开文件? python 文件对象有哪些属性? 如何读文件? read() readline() 如何写文件? 如何操作文件和目录? 强大的 o ...
- Python入门篇-文件操作
Python入门篇-文件操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.文件IO常用操作 open:打开 read:读取 write:写入 close:关闭 readlin ...
- python基础篇(文件操作)
Python基础篇(文件操作) 一.初始文件操作 使用python来读写文件是非常简单的操作. 我们使用open()函数来打开一个文件, 获取到文件句柄. 然后通过文件句柄就可以进行各种各样的操作了. ...
- Python之常用文件操作
Python之常用文件操作
- python基础之 编码进阶,文件操作和深浅copy
1.编码的进阶 字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码.即先将其他编码的字符串解码(decode)成unicode,再从unic ...
- python基础 (编码进阶,文件操作和深浅copy)
1.编码的进阶 字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码. 即先将其他编码的字符串解码(decode)成unicode,再从uni ...
- Python开发【第三篇】:Python基本之文件操作
Python基本之文本操作 一.初识文本的基本操作 在python中打开文件有两种方式,即:open(...) 和 file(...) ,本质上前者在内部会调用后者来进行文件操作,推荐使用 open ...
- python基础之文件操作
对于文件操作中最简单的操作就是使用print函数将文件输出到屏幕中,但是这种操作并不能是文件保存到磁盘中去,如果下调用该数据还的重新输入等. 而在python中提供了必要的函数和方法进行默认情况下的文 ...
随机推荐
- string知识
因为历史原因以及为了与C语言兼容,字符串字面值与标准库string类型不是同一种类型.这一点很容易引起混乱,编程时一定要注意区分字符串字面值和string数据类型的使用,这很重要. 额~~~C字符串是 ...
- 【机制】js的闭包、执行上下文、作用域链
1.从闭包说起 什么是闭包 一个函数和对其周围状态(词法环境)的引用捆绑在一起,这样的组合就是闭包. 也就是说,闭包让你可以在一个内层函数中访问到其外层函数的作用域. 在 JavaScript 中,每 ...
- Pytest(8)parametrize参数化
前言 当某个接口中的一个字段,里面规定的范围为1-5,你5个数字都要单独写一条测试用例,就太麻烦了,这个时候可以使用pytest.mark.parametrize装饰器可以实现测试用例参数化. 官方示 ...
- HDU5691 Sitting in Line【状压DP】
HDU5691 Sitting in Line 题意: 给出\(n\)个数字,有些数字的位置固定了,现在要求把所有没固定的数字放在一个位置,使得任意相邻两个位置的数字的相乘的和最大 题解: \(n\) ...
- Dapr微服务应用开发系列2:Hello World与SDK初接触
题记:上篇介绍了Dapr的环境配置,这次我们来动手尝试一下Dapr应用的开发 Hello World Dapr应用的Hello World其实和其他的Hello World一样简单: 首先用你喜欢的语 ...
- Dapr微服务应用开发系列3:服务调用构件块
题记:这篇开始逐一深入介绍各个构件块,从服务调用开始 原理 所谓服务调用,就是通过这个构件块让你方便的通过HTTP或者gRPC协议同步调用其他服务的方法,这些方法也是通过HTTP或者gRPC来暴露的. ...
- ucosIII学习笔记——钩子函数
一开始听见钩子函数感觉很莫名其妙,更不知道它有何作用,这是第一篇博客,也是学习ucosIII操作系统的一个开始吧. 在系统中有开发者自己创建的任务也有系统内部任务 ,UCOSIII中有五个系统任务,分 ...
- Chrony时间同步
chrony 服务器 yum -y install chrony cp /etc/chrony.conf{,.bak} #备份默认配置 cat > /etc/chrony.conf <&l ...
- codeforces 11B Jumping Jack
Jack is working on his jumping skills recently. Currently he's located at point zero of the number l ...
- codeforces 01B
B. Spreadsheets time limit per test 10 seconds memory limit per test 64 megabytes input standard inp ...