Python文件的操作处理详解
作者:boy-s6 发布时间:2022-07-07 06:44:16
1.使用open()函数打开文件夹
在读取一个文件的内容之前,需要先打开这个文件。在Python程序中可以通过内置函数open()来打开一个文件程序中,,并用相关的方法读或写文件文件中的内容以供程序的处理和使用,同时可以将文件看作Python中的一种数据类型。是用函数open()的语法格式如下。
open(filename, mode='r', buffering=None, encoding=None, errors=None,
newline=None, closefd=True, opener=None)
open: 打开
以什么样的方式打开, 读或写 read, write
以读的方式:文本的方式, 二进制的方式
以写的方式:文本的方式,二进制的方式
写文件的时候:覆盖,追加(两种方式)
当使用上述函数open()打开一个文件后, 就会放回一个文件对象。上述格式中主要参数的具体说明如下所示:
filename:
表示要打开的文件名。(路径+文件名)mode:
模式。buffering:
可选参数,缓冲区大小encoding:
文件编码类型。文本文件才有可能需要编码,二进制文件不需要指定编码 否则会报出异常
errors:
编码错误处理方式。newline:
控制通用换行符模式的行为。closefd:
控制在关闭文件时是否彻底关闭文件。
上述格式中,参数“mode”表示文件打开模式。在Python程序中,常用的文件打开模式如下表所示。
模式 | 描述 |
r | 以读的方式打开文件(默认) |
rb | 以二进制的格式打开一个文件只用于读。文件指针将会放在文件开头。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件开头。 |
rb+ | 以二进制的格式打开一个文件用于读写。文件指针将会放在文件开头。 |
w | 以写的方式打开,先清空文件再写(覆盖),如果该文件不存在,创建新文件 |
wb | 以二进制的格式打开文件并写入,先清空文件再写(覆盖),如果该文件不存在,创建新文件。 |
w+ | 以二进制的格式打开一个文件用于读写。先清空文件再写(覆盖),如果该文件不存在,创建新文件。 |
wb+ | 以二进制的格式打开文件并读写,先清空文件再写(覆盖),如果该文件不存在,创建新文件。 |
a | 以追加的方式去写 |
ab | 以二进制的格式打开一个文件夹用于追加。如果该文件存在,文件指针将会放在文件的结尾。也就是说,新的内容将会写入到已有的内容之后。如果该文件不存在,创建新文件。 |
a+ | 打开一个文件用于读写。如果该文件存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件。 |
下图很好的总结了这几种模式:
#默认以文本读的方式打开
file_obj = open("file.txt", encoding="utf-8")
data = file_obj.read()
print(data)
file_obj.close()
file_obj = open("file.txt", "rt", encoding="utf-8")
data = file_obj.read()
print(data)
file_obj.close()
file_obj = open("file.txt", "w", encoding="utf-8")
data = file_obj.write("11111111111111111")
print(data)
file_obj.close()
file_obj = open("file2.txt", "w", encoding="utf-8")
data = file_obj.write("11111111111111111")
print(data)
file_obj.close()
file_obj = open("file2.txt", "a", encoding="utf-8")
data = file_obj.write("2222222222222")
print(data)
file_obj.close()
file_obj = open("file3.txt", "a+", encoding="utf-8")
file_obj.write("33333333333333333333333333")
file_obj.close()
file_obj = open("file.txt", encoding="utf-8")
data = file_obj.read()
file_obj.close()
1.1.2二进制的方式(打开):图片,音频,视频或者其他的非文本的文件。
#打开”IO.png“文件,并以二进制的方式读出, b不能单独使用(b前的r不能省略)
file_obj = open("IO.png", "rb")
data = file_obj.read()
print(data)
#关闭文件
file_obj.close()
#以二进制的方式写入文件”psb_copy.jpg“
file_obj = open("psb_copy.jpg", "wb")
file_obj.write(data)
#关闭文件
file_obj.close()
注意:“IO.png”文件中,以存入了一张照片。
2.文件的操作
以文本方式写入的文件, 无需指定编码 以二进制方式写入文件,写入的内容要 求为bytes,所以通过str.encode('utf-8')来返回 bytes
1.2.1 文件写操作:
write()方法 f.write("hello world") #
向目标文本文 件写入一行字符串
f.write("hello world".encode("utf-8")) #
向目标二进制文件写入一行字符串1.2.2文件写操作:
writelines()
方法写入 文件的字符串序列。
seq = ["hello world 1\n", "nihao wohao 2"] f.writelines( seq ) 7/15
1.2.3 文件读操作:
read()
方法从文件读取指定的字节数,如果未给定或为负则读取所有。
ret = f.read() #
默认全部读出 ret = f.read(5) #读出指定长度字符1.2.4 文件读操作:
readline()
方法可以读 出一行数据ret = f.readline() #
读取一行注意:有个很像的
readlines()
方法ret = f.readlines() #
返回的是一个列 表,且返回的是你读取的字符所在行的整个内容,但是当数据较大时,这样的用法会很占 用内存。
3.使用File操作文件
3.1File对象的介绍
File对象中的属性信息如下表所示。
File对象中的属性信息
属性 | 描述 |
file.closed | 如果文件已关闭返回True;否则返回False |
file.mode | 返回打开文件的访问模式 |
file.name | 返回文件的名称 |
在Python程序中,对象File时通过内置函数实现对文件操作的,其中常用的内置函数如下。
File对象中的内置函数
函数 | 功能 |
file.close() | 关闭文件,关闭文件后不能再进行读写操作 |
file.flush() | 刷新文件内部缓冲区,直接把内部缓冲区的数据写入文件,而不是被动的等待输出缓冲区写入。 |
file.fileno() | 返回一个整形的文件描述,可以用在如os模块的read方法等一些底层操作上 |
file.isatty() | 如果文件连接到一个终端设备返回True,否则返回False |
file.next() | 返回文件下一行 |
file.read([size]) | 从文件读取指定的字节数,如果为给定或者为负值,则读取所有字节 |
file.readline([size]) | 读取整行,包括“\n” |
file.readlines([hint]) | 读取所有行并返回列表,如给定hint>,返回总合大于约为hint字节的行,实际读取值可能比hine大,因为需要填充缓冲区 |
file.seek(offsrt[, whence]) | 设置文件当前位置 |
file.tell | 返回文件当前位置 |
file.truncate([size]) | 截取文件,截取的字节通过size指定,默认为当前文件的位置 |
file.write(str) | 将字符串写入文件,没有返回值 |
file.writeline(lines) | 向文件写入一个序列字符串列表,如果需要换行,则要自己加入换行符。 |
来源:https://blog.csdn.net/weixin_58297531/article/details/120616302


猜你喜欢
- Python 列表(list):1.序列介绍: 序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引
- WEB标准,从我大二开始接触到毕业后的第一份工作“页面重构工程师”,从接触标准到蓝色理想标准区版主的四年多时间里,WEB标准已经成为我生活中
- 周五下午,作为小白太痛苦了,这两天一直在做一件事,如下:使flask接口中的函数执行的同时,向指定的url传递数据(我甚至不知道怎么描述这个
- 字符串’^198[0-9]$’可以匹配‘1980-1989’
- MySQL和MariaDB的关系MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。MariaDB
- 基于之前的文章方法,加入批处理命令即可实现自动备份。只是由于批处理命令中对于备份文件的名字按照时间命名比较特别,所以特别整理一文。1、复制d
- 本文实例讲述了PHP中substr_count()函数获取子字符串出现次数的方法。分享给大家供大家参考,具体如下:PHP中的substr_c
- 前言Vscode是是一个强大的跨平台工具,我自己电脑是mac,公司电脑是win而且是内部环境,导致公司安装软件很费劲。好在vscode许多插
- 本文实例讲述了js实现文本框宽度自适应文本宽度的方法。分享给大家供大家参考。具体如下:一个会随着输入文本框的字符多少而自动增加宽度的JS代码
- 由于marquee标签现在用得是越来越少了,所以滚动效果的做法大多也都改用javascript来实现了,至于不明白为什么不直接用marque
- 一、参照完整性参照完整性指的就是多表之间的设计,主要使用外键约束。多表设计: 一对多、多对多、一对一设计1.一对多关联主要语句:constr
- 1. MySQL慢查询介绍 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超
- 我就废话不多说了,直接上代码了。非常简单哦!pytorch转成longtensorb = torch.rand(3,3)#得到的是float
- 我是一个初入互联网的视觉设计师,和以往做设计感受最大的不同就是:一个设计的最终定稿会受到多方面的挑战,有来自产品经理的,来自开发的,来自测试
- 由于HTTP协议是无状态协议,所以服务器与客户端通过http协议通讯时,服务器不能记录客户端的信息。为了解决这个问题,通过 Cookie 和
- Python语法基础01-Python快速入门U1-定义变量直接定义 不用指明变量类型e.g:a=10U2-判断语句#coding=utf-
- 导言在前面的两篇教程中,我们看到了如何在单一页面中显示主/从报表, 它使用DropDownList显示主记录,使用GridView或Deta
- Python的可视化工具有很多,数不胜数,各有优劣。本文就对其中的pylab进行介绍。之所以介绍这一款,是因为它和Matlab的强烈相似度,
- 目录一 背景二 库简介三 代码3.1 创建表格3.2 增加row3.3 增加column3.4 打印表格3.5 边框操作3.6 输出json
- 执行时间方法1import datetimestarttime = datetime.datetime.now()#long running