python--文件操作

一、概述

我们工作中需要经常操作文件,下面就讲讲如何用Python操作文件

1、文件操作的流程:

  • 打开文件,得到文件句柄赋值给一个变量
  • 通过文件句柄,对文件进行操作
  • 关闭文件
#获取文件句柄
f = open("yesterday","r",encoding="utf-8")
#读取数据
data = f.read()
#打印读取的文件
print(data)
#关闭文件
f.close()

注: f 又叫文件句柄,它包含文件的文件名、文件的字符集、文件的大小、文件在硬盘上的起始位置

2、两次读取,第二次读取无内容解疑:

因为在文件中 ,维护一个类似文件指针的一个东西,这个文件指针类似于我们平时操作文件时的光标的东西,所以当第1次读文件时,文件指针已经指向最后一个位置,所以第2次再去读取的时候,是从最后一个位置开始读取的,所以读取的为空。

那怎么再重新读取数据呐?把光标移动到开始位即可

读取内容:

Yesterday when I was young
View Code
>>> f = open("yesterday","r",encoding="utf-8")
>>> #第1次读取
>>> data = f.read()
>>> #第2次读取
>>> data2 = f.read()
>>> print(data)
>>> print("----------data2-----%s------"%(data2))
>>> f.close()
#输出结果
Yesterday when I was young
----------data2-----------
View Code

Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。

注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。

二、文件打开模式:

注:在读取文件之前最好导入os模块,判断一下文件是否存在,这是一个好习惯

三、with、读取文件对比:

1、with:

为了避免打开文件后忘记关闭,可以通过管理上下文,即:

with open('log','r') as f:
    pass

如果打开多个文件会导致一行代码过长,(python官方建议,一行代码不超过80个字符),所以打开多个文件建议以下写法:

#with open('log1') as obj1, open('log2') as obj2:

with open('log1') as obj1, 
        open('log2') as obj2:
    pass

2、读取文件对比:

#readline() 读取一行文件

>>> f = open("yesterday","r",encoding="utf-8")
>>> print(f.readline())
>>> f.close()
#输出结果
Yesterday when I was young


#------------------------------------------------------------------------------------
#readlines() 把文件中的每一行作为一个元素形成一个列表

>>> f = open("yesterday","r",encoding="utf-8")
>>> print(f.readlines())
>>> f.close()
#输出结果
[' Yesterday when I was young']

我们正常循环读取文件中的每一行,如下:

>>> f = open("yesterday","r",encoding="utf-8")
>>> for line in f.readlines():
>>>     print(line.strip())
>>> f.close()
#输出结果
Yesterday when I was young
Yesterday when I was young

这种方法已经达到我们的目的了,可以顺利的读取每一行,但是,当我们遇到2G,20G,甚至200G的文件时,你这样读取会导致内存不够用,会使程序变的很慢,因为你的内存只有几个G,你把几十个G的数据放到内存,内存肯定是受不了的,所以这种方法只适合小文件,不适合大文件。我们于是就有下面这种方法,如下:

>>> f = open("yesterday","r",encoding="utf-8")
#f文件变成迭代器
>>> for line in f:
>>>     print(line.strip())
>>> f.close()
#输出结果
Yesterday when I was young
Yesterday when I was young

这种写法的好处在于,读取文件时,是一行一行的读取,而且,读取一行删除一行,内存中只保留一行

四、文件操作的内置方法:

file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:

原文地址:https://www.cnblogs.com/doumingyi/p/12449372.html