Python3 —— 文件

版权声明:本文为博主原创文章 && 转载请著名出处https://blog.csdn.net/cs_lwb https://blog.csdn.net/cs_lwb/article/details/81327932

Python3 —— 文件

前言:当我们想做数据数据持久化的时候。我们可以操作文件,将自己的数据保留到文件当中。其中文件是操作系统提供给应用程序来操作硬盘虚拟概念,操作系统把复杂的硬件操作封装成简单的接口给用户/应用程序使用。简单的说通过这些接口我们可以把数据存储在硬盘中,在需要的时候可以进行增删改查等操作。


一、基本流程

文件的读写操作可以简单的分成三部

(1) 打开文件,得到文件句柄并赋值给一个变量

(2) 通过句柄对文件进行操作

(3) 关闭文件

例:

>>> f = open('chenli.txt') #打开文件

>>> first_line = f.readline()

>>> print('first line:',first_line) #读一行

>>> data = f.read()# 读取剩下的所有内容,文件大时不要用

>>> print(data) #打印读取内容

>>> f.close() #关闭文件

二、文件打开方式

(1)由应用程序向操作系统发起系统调用open(...)

(2)操作系统打开该文件,并返回一个文件句柄给应用程序

(3)应用程序将文件句柄赋值给变量f

>>> f=open('a.txt','r',encoding='utf-8')

文件打开方式:

文件句柄 = open('文件路径', '模式')

文件句柄 = open('文件路径', '模式',encoding='编码')

模式介绍:

注:

1、打开一个文件包含两部分资源:操作系统级打开的文件+应用程序的变量。在操作完毕一个文件时,必须把与该文件的这两部分资源一个不落地回收,回收方法为:

(1)f.close() #回收操作系统级打开的文件

(2)del f #回收应用程序级的变量

2、f=open(...)是由操作系统打开文件,那么如果我们没有为open指定编码,那么打开文件的默认编码很明显是操作系统说了算了,操作系统会用自己的默认编码去打开文件,在windows下是gbk,在linux下是utf-8。

三、文件操作

(1)读

>>> f.read() #读取所有内容,光标移动到文件末尾

>>> f.readline() #读取一行内容,光标移动到第二行首部

>>> f.readlines() #读取每一行内容,存放于列表中

(2)写

#针对文本模式的写,需要自己写换行符

>>> f.write('1111\n222\n')

#针对b模式的写,需要自己写换行符

>>> f.write('1111\n222\n'.encode('utf-8'))

>>> f.writelines(['333\n','444\n']) #文件模式

>>> f.writelines([bytes('333\n',encoding='utf-8'),'444\n'.encode('utf-8')]) #b模式

(3)改

目前没有发现直接修改文件里面一段内容的方法。所以需要自己写,思路如下:

——从文件中找到需要修改的内容的位置

——然后从位置上替换内容

——把新的内容写入文件中

# 修改:

>>> f = open("file","r",encoding="utf-8")#打开原始文件

>>> f_new = open("file2","w",encoding="utf-8")#打开要修改的文件

>>> for line in f :

>>>     if "五五五五五五" in line:#找到要修改的内容

>>>         line = line.replace("五五五五五五","三三三三三三")#替换内容

>>>     f_new.write(line)#写入到要修改的文件中

>>> f.close()#关闭文件

>>> f_new.close()

(4)with语句

# 避免打开文件忘记关闭,可以通过with管理上下文:

>>> with open("file", "r",encoding="utf-8") as f:

    for line in f:

        print(line)

# 通过with代码块执行完毕,内部会自动关闭并释放文件资源

#Python2.7以后 with可以打开多个文件,

>>> with open("file", "r",encoding="utf-8") as f,\

        open("file2", "r",encoding="utf-8") as f1:

(5)常用操作

>>> f.readable()——文件是否可读

>>> f.writable() ——文件是否可读

>>> f.closed ——文件是否关闭

>>> f.encoding ——如果文件打开模式为b,则没有该属性

>>> f.flush() ——立刻将文件内容从内存刷到硬盘

>>> seek()——指定文件指针的位置

>>> seek(0)——把指针移动到文件开头处 

>>> tell()——获取文件指针的位置

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

 

 

注:目前有关——文件知识,只研究到该阶段,后续如有发现新的用法,将继续添加。

猜你喜欢

转载自blog.csdn.net/cs_lwb/article/details/81327932