Python文件操作:文件的打开关闭读取写入
Python文件操作:文件的打开关闭读取写入
一、文件的打开关闭
Python能以文本和二进制两种方式处理文件,本文主要讨论在Python3中文本文件的操作。
文件操作都分为以下几个步骤:
1.打开文件。
2.操作文件:读/写。
3.关闭文件。
操作系统中的文件默认处于存储状态,读写文件时需要请求操作系统打开一个要在当前程序操作的对象,打开不存在的文件可以创建文件。open()方法通过接收"文件路径"以及“文件打开模式”等参数来打开一个文件,并且返回文件对象。打开后的文件只能在当前程序操作,不能被另一个进程占用。操作之后一定将文件关闭,进程将释放对文件的控制,使文件恢复存储状态,这时,另一个进程将能够操作此文件。
open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。其中,file对象使用 open 函数来创建,file对象常用的函数如下:
file.close():关闭文件。关闭后文件不能再进行读写操作。
file.flush():刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
file.fileno():返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。
file.isatty():如果文件连接到一个终端设备返回 True,否则返回 False。
file.next():返回文件下一行。
file.read([size]):从文件读取指定的字节数,如果未给定或为负则读取所有。
file.readline([size]):读取整行,包括 "\n" 字符。
file.readlines([sizeint]):读取所有行并返回列表,若给定sizeint>0,则是设置一次读多少字节,这是为了减轻读取压力。
file.seek(offset[, whence]):设置文件当前位置。
file.tell():返回文件当前位置。
file.truncate([size]):截取文件,截取的字节通过size指定,默认为当前文件位置。
file.write(str):将字符串写入文件,返回的是写入的字符长度。
file.writelines(sequence):向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。
文件打开模式如下:
t:文本模式 (默认)。
x:写模式,新建一个文件,如果该文件已存在则会报错。
b:二进制模式。
+:打开一个文件进行更新(可读可写)。
U:通用换行模式(不推荐)。
r:以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb:以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+:打开一个文件用于读写。文件指针将会放在文件的开头。
rb+:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w:打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb:以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+:打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a:打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+:打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
二、文件的读写
1.Python中读取文件的相关方法:
<file>.read():一次读取文件所有内容,返回一个字符串或字节流。
<file>.read(size):每次最多读取指定长度的内容,返回一个字符串或字节流。在Python3中size指定的是字符长度。
<file>.readlines():一次读取文件所有内容,按行返回一个列表。
<file>.readline():每次只读取一行内容。
我们来读取一个存放在D盘的名为“123.txt”的文本文件,该文件的字符编码为utf-8,其中包含的文本是北岛的诗歌《走吧》,如下所示。

# 第一步:(以只读模式)打开文件
f = open('D:/123.txt', mode='r', encoding='utf-8')
# 第二步:读取文件内容
print(f.read())
# 第三步:关闭文件
f.close()
运行结果:

2.Python中写入文件的相关方法:
<file>.write():向文件写入一个字符串或字节流。
<file>.writelines():将一个元素全为字符串的列表写入文件。
<file>.seek(offset):改变当前操作指针的位置,offset的值:
0——文件开头
1——当前位置
2——文件结尾
注意:Python字符串可以是二进制数据,而不是仅仅是文字。write()方法不会在字符串的结尾添加换行符('\n')。
我们创建一个文本文件用来写入文本,该文件的字符编码为utf-8,如下所示。
# 第一步:(以只写模式)打开文件
f = open('D:/123.txt', mode='w', encoding='utf-8')
# 第二步:写入文件内容
f.write( "人生若只如初见,何事秋风悲画扇。")
# 第三步:关闭文件
f.close()
运行结果:

也可以向文件写入一个列表,打印输出结果,如下所示。
f = open('D:/123.txt', mode='w+', encoding='utf-8')
ls=['一本正经','两厢情愿','三顾茅庐','四海为家']
f.writelines(ls)
#写入内容在文件操作指针之前,用seek(0)将文件操作指针返回到文件开始使其顺利向后读入并打印内容,否则打印内容无法显示
f.seek(0)
for line in f:
print(line)
f.close()
运行结果:


参考资料:
https://www.runoob.com/python/python-files-io.html
Python文件操作:文件的打开关闭读取写入的更多相关文章
- python读写操作文件
with open(xxx,'r,coding='utf-8') as f: #打开文件赋值给F ,并且执行完了之后不需要 f.close(). 在Python 2.7 及以后,with又支持同时 ...
- 文件操作mode学习总结-----Python学习总结【第四篇】:Python之文件操作(文件、正则、json、pickle)
非常全的博客,防丢链接参考https://www.cnblogs.com/madsnotes/articles/5521551.html 1.文件操作 1.1 操作流程 1)文件打开 2)文件操作 3 ...
- 在Python中操作文件之truncate()方法的使用教程
在Python中操作文件之truncate()方法的使用教程 这篇文章主要介绍了在Python中操作文件之truncate()方法的使用教程,是Python入门学习中的基础知识,需要的朋友可以参考下 ...
- 字符编码和Python代码操作文件
字符编码和Python代码操作文件 读写模式之a模式 # a模式 只追加模式 # 路径不存在:自动创建 with open(r'a.txt','a',encoding='utf8') as f: pa ...
- 根据python上下文管理,写一个在读文件内容前后自动打开关闭文件的程序
利用上下文管理实现读f文件前后自动打开关闭文件#在本目录创建f文件,内容写monkey代码如下 import contextlib #导入模块1 @contextlib.contextmanager# ...
- linux文件操作篇 (二) 打开和关闭文件
2.1 打开文件和关闭文件 #include <sys/types.h>#include <sys/stat.h>#include <fcntl.h> 头文件 i ...
- PHP文件操作,多行句子的读取,file()函数,file_get_contents()函数,file_put_contents()函数,is_file,统计网站pv (访问量),文件的复制 copy,文件重命名 rename,删除文件 unlink
php中添加utf-8: header("Content-type:text/html;charset='UTF-8'"); 文件操作步骤: 1.在同一目录下建立一个file.tx ...
- python 关于操作文件的相关模块(os,sys,shutil,subprocess,configparser)
一:os模块 os模块提供了许多允许你程序与操作系统直接交互的功能 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname&quo ...
- python 文件操作: 文件操作的函数, 模式及常用操作.
1.文件操作的函数: open("文件名(路径)", mode = '模式', encoding = "字符集") 2.模式: r , w , a , r+ , ...
随机推荐
- python爬虫--分布式爬虫
Scrapy-Redis分布式爬虫 介绍 scrapy-redis巧妙的利用redis 实现 request queue和 items queue,利用redis的set实现request的去重,将s ...
- Mysql数据库优化一:集群(读写分离)之主从服务器的安装与配置
Mysql数据库的集群(读写分离),说白了就是将读操作和写操作分开在不同的服务器上实现,以达到提高效率的目的. 大致原理如下: 数据库中的所有操作都是有日志记录的(前提是要打开这个日志记录功能) 1. ...
- Springboot静态页面放在static路径下还是访问不到
一种最常见的问题,静态资源放在默认的目录,如:resources/static或resources/templates 访问静态资源的时候,路径不应带上默认目录,因为springboot默认从这些目录 ...
- SpringMVC深入浅出(一)
1.Springmvc是什么 是一个表现层框架,用于接受请求及参数,响应请求回显数据. 2.SpringMVC处理流程 SpringMVC流程 1. 用户发送请求至前端控制器DispatcherSe ...
- RAID磁盘阵列介绍
磁盘阵列 RAID介绍 一.简介: 磁盘阵列(Redundant Arrays of Independent Drives,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意. 最初是由加利福尼亚 ...
- RMAN 下NOARCHIVELOG和ARCHIVE模式的恢复
恢复处于NOARCHIVELOG模式的数据库 当数据库处于NOARCHIVELOG模式时,如果出现介质故障 ,则最后一次备份之后对数据库所做的任何操作都将丢失.通过RMAN执行恢复时,只需要执行res ...
- NGUI 源码分析- UIWidgetInspector
NGUI Version 3.9.0 //---------------------------------------------- // NGUI: Next-Gen UI kit // Copy ...
- ZKWeb网页框架2.2.1正式发布
2.2.1 更新的内容有 改进 EFCore 支持 支持自动 json 序列化字段 (通过 WithSerialization 选项) 支持懒加载 更新后 EFCore 可以使用所有默认插件 (ZKW ...
- IPFS学习-内容标识符(CIDs)
内容标识符(CIDs) 内容标识符也称为CID,是用于指向IPFS中材料的标签. 它不会指示内容的存储位置,但会根据内容本身形成一种地址. CID简短,无论其基础内容的大小如何. CID基于内容的加密 ...
- PHP-FPM 使用(含多站点多端口)
PHP-FPM 使用 PHP-FPM 是在 Linux 环境下用来管理调度 PHP 执行的调度器,源码安装时会自动安装,PHP 安装可参考Centos 下安装 PHP (新) 查看版本 # php-f ...