python操作文件

mac2022-06-30  22

文件操作

读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。

参数1:文件名,可以是文件的绝对路径参数2:option r 读 w 写 b 二进制 a 追加

读文件

要读取一个文件的内容,使用python内置的open()函数,传入文件名和标示符,在读文件的时候,文件一定是要存在的,否则会报IOError。

f = open("1.txt","r") # 标识符"r"表示读 f.read() # read()方法可以一次读取文件的全部内容到内存中 f.close() # 文件使用完毕必须关闭 为了避免在读文件的时候产生IOError,我们使用try......finally try: f = open("1.txt", "r") print(f.read()) finally: if f: f.close()

但是每次都要打开文件、读取文件、关闭文件,操作很麻烦,我们可以使用with语句,它会自动帮我们关闭文件。

with open("1.txt","r") as f: print(f.read()) # read(size) 每次最多读取size个内容 print(f.readline()) # readline() 每次读取一行内容 print(f.readlines()) # readlines() 一次读取所有内容,并返回一个list,其中每个元素就是一行内容

二进制文件读取

之前都是读取文本文件,并且都是utf-8编码格式,接下来我们要读取二进制文件,如图片、视频等,用"rb"模式打开文件即可。

f = open("1.jpg","rb") f.read() # b'\xff\xd8\xff\xe1\x00\x18Exif\x00\x00...' # 返回一个十六进制的字符串

读取非utf-8编码的文本文件,我们需要给open()函数传入一个encoding参数。如果文本中有一些非法编码的字符,会报UnicoDecodeError,可以再传入一个errors参数。输入中文,python3要在后面加上encoding="utf-8" 指定编码类型。

ENCODING = "gbk" # 我们可以全局声明一下字符编码,下面可以直接使用这个变量 f = open("gbk.txt","r",encoding=ENCODING,errors="ignore") f.read()

写文件

和读文件差不多,只是在open()函数中传入的是"w"或者"wb"表示写文本文件或者写二进制文件。需要写入什么编码格式的内容,也可以通过传入encoding。一定要记得关闭文件。

f = open("1.txt","w",encoding="utf-8") f.write("Hello,world") f.close()

同样,我们也可以使用with语句来写文件。

with open("1.txt","w",encoding="utf-8") as f: f.write("Hello,world")

追加内容到文件

我们可以使用"a"来完成。

f = open("1.txt","a",encoding="utf-8") f.write("Hello,world") f.close()

同样也可以改成with语句。

with open("1.txt","a",encoding="utf-8") as f: f.write("Hello,world")

 

文件对象f常用的操作方法

fr.read() 把文件的所有内容都读取出来,返回字符串 fr.write(data) 把字符串data写入到文件中,只接收字符串参数 fr.readline() 每次读取文件一行的数据,返回每行数据 fr.readlines() 读取文件内容,返回一个list,每一个元素是一行字符串 fr.name 文件名字 fr.fileno() 文件描述符 fr.close() 关闭文件 fr.encoding() 文件编码 fr.closed 返回bool值,查看文件是否已经关闭 fr.seek() 控制光标位置,文件需要使用b方式打开,偏移量,正数向后偏移,负数向前偏移 参数(offset,whence)offset偏移量(数字) whence 0:开始 1:当前位置 2:最后 fr.tell() 返回文件光标位置 fr.truncate(size) 只有写文件才可以用,清空文件,size表示清空到什么位置

 

 

函数的定义

以关键字def开头,紧接着是函数名,相关参数,可以是一个或者多个,然后冒号:回车缩进,紧接着是函数处理过程,形如:

def func(args...): doSomething

函数的参数

def add(x, y): return x + y add(2,3) # 结果是5

参数可以设定默认值,如:

def add( a, b=10 ): #注意:默认值参数只会运算一次 return a+b

冗余参数

def func(*args): #这种定义传递的参数是一个元组 print(args,type(args)) func(10,20) #结果: #(10, 20) <class 'tuple'>

 

def func(**kw):#使用**定义参数传递的是一个字典 print(kw, type(kw) ) func(a=10,b=20)#这种函数在使用时必须指定参数值,使用key=value这种形式 #结果:{'b': 20, 'a': 10} <class 'dict'>

 

转载于:https://www.cnblogs.com/yangjian319/p/8823813.html

最新回复(0)