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 ...
随机推荐
- C#应用程序结构
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- 吴裕雄--天生自然 JAVASCRIPT开发学习:字符串
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- CKeditor上传图片 实现所见即所得界面
迟了好多天的分享,CKeditor这个编辑器虽然不错,但也真苟啊,搞图片上传这个功能,快给我搞佛系了,话不多说,上代码 1.首先去官网下载一个full的版本,我用的是CKeditor 4.13,解压之 ...
- VC++ DLL 2 静态链接库
这一篇以VS2013为例子介绍怎样编写一个静态链接库和调用. 1.打开VS2013,新建Visual C++ 的win32项目: 新建后工程分支如下: 添加头文件和源文件: 编写头文件和源文件内容: ...
- Q7:Reverse Integer
7. Reverse Integer 官方的链接:7. Reverse Integer Description : Given a 32-bit signed integer, reverse dig ...
- Vue.js(15)之 json-server搭建模拟的API服务器
json-server搭建模拟的API服务器 运行命令 npm install json-server -D 全局安装 json-server 项目根目录下创建 mock 文件夹 mock 文件夹下添 ...
- 数的划分(DFS、DP)
https://www.luogu.com.cn/problem/P1025 题目描述 将整数n分成k份,且每份不能为空,任意两个方案不相同(不考虑顺序). 例如:n=7,k=3,下面三种分法被认为是 ...
- 吴裕雄--天生自然MySQL学习笔记:MySQL 临时表
MySQL 临时表在我们需要保存一些临时数据时是非常有用的.临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间. MySQL临时表只在当前连接可见,如果使用PHP脚本来创建My ...
- Linux中Tomcat 自动设置CATALINA_HOME方法
Linux中Tomcat 自动设置CATALINA_HOME方法 在服务器部署中,我们经常会出现“在一个服务器上运行多个tomcat服务”的情况. 使用如下方法设置,可以无限复制平移扩展Tomcat, ...
- java字符串排序(数字,字母,汉字等组合排序)
package cn.cnnho.backstage.utils; import java.util.ArrayList;import java.util.Arrays;import java.uti ...