博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python文件基本操作及上下文管理
阅读量:6484 次
发布时间:2019-06-23

本文共 1831 字,大约阅读时间需要 6 分钟。

文件基本操作

打开文件:f = open(fole_name,mode = 'r'),传入表示文件路径的字符串,会返回一个文件对象,mode是文件打开模式。

关闭文件:f.close(),调用给定文件对象的close方法。

文件打开模式

  1. r:以只读方法打开文件,文件指针默认放在文件开头,文件不存在就报错。
  2. r+:打开一个文件用于读写,文件指针默认放在文件开头,文件不存在则报错。
  3. w:打开一个文件只用于写入,如果文件已存在则将其覆盖,不存在就创建一个新文件。
  4. w+:打开一个文件用于读写,如果文件已存在则将其覆盖,不存在就创建一个新文件。
  5. a:打开一个文件用于追加,如果文件存在,文件指针会放在文件结尾,不存在就会创建一个新文件进行写入。
  6. a+:打开一个文件用于读写,如果文件存在,文件指针会放在文件结尾,不存在就会创建一个新文件进行写入。

其他模式还有:rb 、rb+ 、wb 、 wb+ 、ab 、ab+。加个b的意思是以二进制的格式写入。

读取/写入文件:

  1. f.read():读取指定大小的内容。
  2. f.readline():读取一行内容。
  3. f.readlines():读取多行内容。
  4. f.write(data):写入内容。
  5. f.writelines(lines):写入多行内容,但需要自己加换行符。
  6. f.flush():立即刷新缓冲。
  7. f.tell():返回文件指针的位置。
  8. 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 datetimeclass 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模块,这个模块可以轻松实现文件的许多操作:

转载于:https://www.cnblogs.com/longwhite/p/10397717.html

你可能感兴趣的文章
js if语句多个条件判断
查看>>
AVPacketList结构体和AVPacketQueue结构体
查看>>
PHP操作redis详细讲解
查看>>
Android学习笔记(一)
查看>>
Java 提高篇(一)
查看>>
虚拟化学习笔记
查看>>
浏览器的兼容性问题
查看>>
我的友情链接
查看>>
今天真的搬走了
查看>>
PC散热风扇之研究一:风扇种类介绍
查看>>
关于Session和Cookie简单实例
查看>>
App框架实现———dagger2
查看>>
zabbix 微信报警
查看>>
rsync命令参数及SSH自定义端口远程拷贝
查看>>
通过SQL Server 2008数据库复制实现数据库同步备份
查看>>
HttpClient做接口测试时自定义参数长度
查看>>
PyCharm2017激活方法
查看>>
正则表达式
查看>>
Exchange企业实战技巧(27)邮件中使用数字签名和邮件加密功能
查看>>
mysql-5.6.27源码安装及错误解决办法
查看>>