文件基本操作

打开文件: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 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文件基本操作及上下文管理的更多相关文章

  1. Python进阶——什么是上下文管理器?

    在 Python 开发中,我们经常会使用到 with 语法块,例如在读写文件时,保证文件描述符的正确关闭,避免资源泄露问题. 你有没有思考过, with 背后是如何实现的?我们常常听到的上下文管理器究 ...

  2. python 面向对象编程 之 上下文管理协议

    with open('path', 'r' ,encoding='utf-8') as f: 代码块 上述就叫做上线文管理协议,即with语句,为了让一个对象兼容with语句,必须在这个对象的类中声明 ...

  3. [ Python入门教程 ] Python文件基本操作

    本文将python文件操作实例进行整理,以便后续取用. 文件打开和创建 Python中使用open()函数打开或创建文件.open()的声明如下: open(name[, mode[, bufferi ...

  4. python文件基本操作(读,写,追加)

    一:只读(r) f=('d:\ python的联系文件'')   绝对路径和相对路径(绝对路径:能找到文件开始到结束路径,真实存在的路径,相对路径:在绝对路径一致的情况下新建一个文件) f=open( ...

  5. [ Python入门教程 ] Python文件基本操作_shutil模块

    shutil模块是对os模块中文件操作的补充,提供文件和目录的移动.复制.打包.压缩.解压等功能 shutil常用函数   shutil.copyfile(src, dst)   复制文件, 如果ds ...

  6. Python中的上下文管理器和with语句

    Python2.5之后引入了上下文管理器(context manager),算是Python的黑魔法之一,它用于规定某个对象的使用范围.本文是针对于该功能的思考总结. 为什么需要上下文管理器? 首先, ...

  7. python中的with与上下文管理器

    #转载请留言联系 很多人平时需要打开文件进行读取写入操作时,通常这样: f = open('文件路径','w') f.write(data) f.close 这样写有一个潜在的问题,如果在调用 wri ...

  8. Python 上下文管理器模块--contextlib

    在 Python 处理文件的时候我们使用 with 关键词来进行文件的资源关闭,但是并不是只有文件操作才能使用 with 语句.今天就让我们一起学习 Python 中的上下文管理 contextlib ...

  9. Python - Context Manager 上下文管理器

    什么是上下文管理器 官方解释... 上下文管理器是一个对象 它定义了在执行 with 语句时要建立的运行时上下文 上下文管理器处理进入和退出所需的运行时上下文以执行代码块 上下文管理器通常使用 wit ...

随机推荐

  1. java web实现在线编辑word,并将word导出(三)

    前面说到前台呈现的页面是img标签,因此需要在后台生成相应的图片,在img的src内容中改为相应的路径地址:而在生成文档的过程中需要替换相应的img标签.后一部分上篇文章已经讲过,本片主要讲前一部分. ...

  2. SPFA--P3905 道路重建

    题目描述 从前,在一个王国中,在n个城市间有m条道路连接,而且任意两个城市之间至多有一条道路直接相连.在经过一次严重的战争之后,有d条道路被破坏了.国王想要修复国家的道路系统,现在有两个重要城市A和B ...

  3. promise核心 为什么用promise

    为什么要用promise 1.使用纯回调函数 先指定回调函数,再启动异步任务 答 1.指定回调函数的方式更加灵活 可以在执行任务前,中,后 2.支持链式调用,解决回调地狱问题 什么是回调地狱:回调函数 ...

  4. 51nod 1392:装盒子 匈牙利+贪心

    1392 装盒子 基准时间限制:1 秒 空间限制:131072 KB 分值: 160 难度:6级算法题  收藏  关注 有n个长方形盒子,第i个长度为Li,宽度为Wi,我们需要把他们套放.注意一个盒子 ...

  5. 使用idea断点调试时出现no executable code found at line问题

    问题描述 今天突然碰到了这样的一个问题: 使用断点调试时,断点的地方出现了一个叉号,而不是对勾,这就让我非常无奈了. 调了一天,终于把这个问题解决了,还是要记录一下的. 问题情况如下: 除了这里,de ...

  6. ZJNU 2349 - 抽抽抽

    为4的倍数,列出所有可能情况再判断即可 处理输入的数据对4取模 可得 4444 2244 2222 1111 3333 1133 1223 1344 1124 3324 共十种情况 所以得出答案 #i ...

  7. 第37章 socket编程 之练习:实现简单的web服务器

    一.参考网址 1.linux C学习之实现简单的web服务器 2.C语言实现简单Web服务器(一)

  8. cmd执行jmeter命令生成报告的问题。

    现有几个jmeter脚本,准备以命令行的方式执行jmeter脚本,并生成报告. 一.使用python语言处理 1.目录结构 2.说明 jmx目录下是jmeter脚本 result目录下是生成的报告及文 ...

  9. cisco路由器license的相关命令简单梳理(转)

    转自https://blog.51cto.com/legendland/1900185作者:legendlandlicense:对于IP Base基本的IOS功能外,另外三个技术包(1 数据Data: ...

  10. MyBatis从入门到精通(第6章):6.3 使用枚举或其他对象

    6.3 使用枚举或其他对象 在 sys_role 表中存在一个字段 enabled,这个字段只有两个可选值,0 为禁用,1 为启用.但是在 SysRole 类中,我们使用的是 Integer enab ...