Python文件基本操作及上下文管理
文件基本操作
打开文件:f = open(fole_name,mode = 'r'),传入表示文件路径的字符串,会返回一个文件对象,mode是文件打开模式。
关闭文件:f.close(),调用给定文件对象的close方法。
文件打开模式:
- r:以只读方法打开文件,文件指针默认放在文件开头,文件不存在就报错。
- r+:打开一个文件用于读写,文件指针默认放在文件开头,文件不存在则报错。
- w:打开一个文件只用于写入,如果文件已存在则将其覆盖,不存在就创建一个新文件。
- w+:打开一个文件用于读写,如果文件已存在则将其覆盖,不存在就创建一个新文件。
- a:打开一个文件用于追加,如果文件存在,文件指针会放在文件结尾,不存在就会创建一个新文件进行写入。
- a+:打开一个文件用于读写,如果文件存在,文件指针会放在文件结尾,不存在就会创建一个新文件进行写入。
其他模式还有:rb 、rb+ 、wb 、 wb+ 、ab 、ab+。加个b的意思是以二进制的格式写入。
读取/写入文件:
- f.read():读取指定大小的内容。
- f.readline():读取一行内容。
- f.readlines():读取多行内容。
- f.write(data):写入内容。
- f.writelines(lines):写入多行内容,但需要自己加换行符。
- f.flush():立即刷新缓冲。
- f.tell():返回文件指针的位置。
- f.seek(position):调整文件指针的位置。
上下文管理
上下文管理就是我们常用的with......as......方法。他可以在我们打开文件后自动地关闭文件。在这上下文管理协议中,就涉及到了两个魔法方法,一个是__enter__,另一个是__exit__。
- __enter__(self):当with开始运行的时候触发此方法的运行,返回值返回给as后面的变量。
- __exit__(self, exc_type, exc_val, exc_tb):当with运行结束之后触发此方法的运行,其中如果抛出异常,exc_type、exc_val、exc_tb分别表示异常的类型、异常内容、异常显示所在位置。
下面的例子就是重写open里的两个方法测试一下文件打开、写入、读取、关闭所消耗的时间:
from datetime import datetime
class test_time():
def __init__(self,filename,mode):
self.filename = filename
self.mode = mode
def __enter__(self):
self.start_time = datetime.now()
self.f = open(self.filename,self.mode)
return self.f
def __exit__(self, exc_type, exc_val, exc_tb):
self.end_time = datetime.now()
time = self.end_time - self.start_time
print("程序运行时间为%s"%time)
run = test_time('tem.txt','w+')
with run as f:
f.write("hello,world!my name is long")
f.readline()
#程序运行时间为0:00:00.001000
内存假文件(IO流)
有时侯我们获取的数据用于处理后就会丢弃不用,老用文件来存储可能会浪费内存,我们也许可以考虑下在内存中模拟一个文件,也叫内存假文件,它的好处是文件一旦关闭,里面的数据就会消失,因此常用于存放临时的数据。相对于文件的操作,假文件的运行速度更快。
导包:import io
文件创建:f = io.StringIo()
文件写入:f.write()
文件读取:f.getvalue()文论文件指针在哪,读取全部数据。
其他的基本操作基本上与文件基本操作雷同
关于文件的操作还有一个os模块,这个模块可以轻松实现文件的许多操作:os模块
Python文件基本操作及上下文管理的更多相关文章
- Python进阶——什么是上下文管理器?
在 Python 开发中,我们经常会使用到 with 语法块,例如在读写文件时,保证文件描述符的正确关闭,避免资源泄露问题. 你有没有思考过, with 背后是如何实现的?我们常常听到的上下文管理器究 ...
- python 面向对象编程 之 上下文管理协议
with open('path', 'r' ,encoding='utf-8') as f: 代码块 上述就叫做上线文管理协议,即with语句,为了让一个对象兼容with语句,必须在这个对象的类中声明 ...
- [ Python入门教程 ] Python文件基本操作
本文将python文件操作实例进行整理,以便后续取用. 文件打开和创建 Python中使用open()函数打开或创建文件.open()的声明如下: open(name[, mode[, bufferi ...
- python文件基本操作(读,写,追加)
一:只读(r) f=('d:\ python的联系文件'') 绝对路径和相对路径(绝对路径:能找到文件开始到结束路径,真实存在的路径,相对路径:在绝对路径一致的情况下新建一个文件) f=open( ...
- [ Python入门教程 ] Python文件基本操作_shutil模块
shutil模块是对os模块中文件操作的补充,提供文件和目录的移动.复制.打包.压缩.解压等功能 shutil常用函数 shutil.copyfile(src, dst) 复制文件, 如果ds ...
- Python中的上下文管理器和with语句
Python2.5之后引入了上下文管理器(context manager),算是Python的黑魔法之一,它用于规定某个对象的使用范围.本文是针对于该功能的思考总结. 为什么需要上下文管理器? 首先, ...
- python中的with与上下文管理器
#转载请留言联系 很多人平时需要打开文件进行读取写入操作时,通常这样: f = open('文件路径','w') f.write(data) f.close 这样写有一个潜在的问题,如果在调用 wri ...
- Python 上下文管理器模块--contextlib
在 Python 处理文件的时候我们使用 with 关键词来进行文件的资源关闭,但是并不是只有文件操作才能使用 with 语句.今天就让我们一起学习 Python 中的上下文管理 contextlib ...
- Python - Context Manager 上下文管理器
什么是上下文管理器 官方解释... 上下文管理器是一个对象 它定义了在执行 with 语句时要建立的运行时上下文 上下文管理器处理进入和退出所需的运行时上下文以执行代码块 上下文管理器通常使用 wit ...
随机推荐
- DispatcherServlet (1)
阅读DispatcherServlet源码和<Spring解密>第二十三章 总结 之前对SpringMVC处理请求模糊不清,本周阅读了DispatcherServlet源码,对这一部分有了 ...
- 小明有5本新书,要借给A、B、C三位小朋友 若每人每次只能借一本,则可以有多少种不同的借法?
/* 问题描述: 小明有5本新书,要借给A.B.C三位小朋友, 若每人每次只能借一本,则可以有多少种不同的借法? 问题分析: 本题属于数学当中最常见的排列组合问题, 即求从5个数当中取3个不同数的排列 ...
- Linux文件和目录的属性及权限
Linux文件和目录的属性及权限讲解 文字解释: 第一列:inode索引节点 第二列:文件类型及权限 第三列:硬链接个数 第四列:文件或目录所属的用户(属主) 第五列:文件或目录所属的用户所归属的组( ...
- 吴裕雄--天生自然TensorFlow2教程:数据加载
import tensorflow as tf from tensorflow import keras # train: 60k | test: 10k (x, y), (x_test, y_tes ...
- 一、VIP课程:互联网工程专题 01-Git基本概念与核心命令掌握
第一课:Git基本概念与核心命令掌握.docx 课程概要: GIT 体系概述 GIT 核心命令使用 GIT 底层原理 一.GIT体系概述 1.使用方式区别 从本地把文件推送远程服务,SVN只需要com ...
- Day 2:线程与进程系列问题(二)
补充: 线程的创建方式二: 1.自定义一个实现Runnable接口的类 2.实现Runnable接口中的run方法把自定义线程的任务写在run方法中 3.创建实现Runnable接口的对象 4.创建T ...
- 关于Oracle中job定时器(通过create_job创建的)配置示例
begin dbms_scheduler.create_job(job_name => 'JOB_BASIC_STATISTIC', job_type => 'STORED_PROCEDU ...
- 设置MySQL客户端连接使用的字符集
设置MySQL客户端连接使用的字符集 时间:2014-03-05 来源:服务器之家 投稿:root 考虑什么是一个"连接":它是连接服务器时所作的事情.客户端发送SQL ...
- Mysql数据库忘记密码找回方法
Mysql数据库忘记密码找回 a 停止mysql服务 /etc/init.d/mysql stop b 使用--skip-grant-tables启动mysql,忽略授权登录验证 mysqld_saf ...
- Django2.0——Form组件简单总结
Django提供了一个Form组件来配和前端的表单进行使用,Form有两个强大的功能,分别是生成HTML代码和验证数据的合法性.通常我们不会用其第一个功能,因为前端的设计可以做出更加精美且多样的表单页 ...