1、打开文件
open()函数中参数中有很多,介绍常用的4个参数
open(file, mode='r', encoding=None, error=None)
①file参数
file参数用于表示要打开的文件,可以是字符串或整数。如果file是字符串,则表示文件名,文件名既可以是当前目录的相对路径,也可以是绝对路径;如果file是整数,则表示一个已经打开的文件。
②mode参数
mode参数用于设置文件打开模式,用字符串表示。用于设置文件打开模式的字符串中的每一个字符都表示不同的含义,对这些字符的具体要求说明如下。这些字符可以进行组合,以表示不同类型的文件的打开模式
t:以文本文件模式打开文件
b:以二进制文件模式打开文件
r:以只读模式打开文件
w:以只写模式打开文件,不能读内容。如果文件不存在,则创建文件;如果文件存在,则覆盖文件的内容
x:以独占创建模式打开文件,如果文件不存在,则创建并以写入模式打开;如果文件已存在,则引发FileExistsError异常
a:以追加模式打开文件,不能读内容。如果文件不存在,则创建文件;如果文件存在,则在文件末尾追加
+:以更新(读写)模式打开文件,必须与r、w或a组合使用,才能设置文件为读写模式
③ encoding参数
encoding用来指定打开文件时的文件编码,默认是UTF-8编码,主要用于打开文本文件
④ errors参数
errors参数用来指定在文本文件发生编码错误如何处理。推荐errors参数的取值为‘ignore’,表示在遇到编码错误时忽略该错误,程序会继续执行,不会退出。
示例代码:
f = open('test.txt', 'w+') #w+表示以读写模式打开文本文件,如果文件不存在,则创建文件
f.write('World')
print('①创建test.txt文件,world写入文件')
f = open('test.txt', 'r+') #r+表示以读写模式打开文本文件,如果文件不存在,则抛出异常
f.write('Hello')
print('②打开test.txt文件,Hello覆盖文件内容')
f = open('test.txt', 'a') #a表示以追加模式打开文件,不能读内容。如果文件不存在,则创建文件;如果文件存在,则在文件末尾追加
f.write(' ')
print('③打开test.txt文件,在文件尾部追加空格')
f = open('test.txt', 'a+') #a+既可以追加写入文件,也可读文件
f.write('Python!')
print('④打开test.txt文件,在文件尾部追加Python')
2、关闭文件
with as
示例代码:
file_name = 'test.txt'
with open(file_name) as f:
content = f.read()
print(content)
3、读写文本文件
read(size=-1):从文件中读取字符串,size限制读取的字符数,size=-1指对读取的字符数没有限制
readline(size=-1):在读取到换行符或文件尾时返回单行字符串。如果已经到文件尾,则返回一个空字符串。size是限制读取的字符数,size=-1表示没有限制
readlines():读取文件数据到一个字符串列表中,每一行数据都是列表中的一个元素。
write(s):将字符串s写入文件中,并返回写入的字符串
writelines(lines):向文件中写入一个字符串列表,不添加行分隔符,因此通常为每一行末尾都提供行分隔符
flush():刷新写缓冲区,在文件没有关闭的情况下将数据写入文件中
示例代码:
with open('test.txt', 'r', encoding='gbk') as f1:
lines = f1.readlines()
with open('test2.txt', 'w', encoding='utf-8') as f2:
f2.writelines(lines)
print('文件复制完成')
4、读写二进制文件
二进制文件的读写单位是字节,不需要考虑编码问题。二进制文件的主要读写方法如下:
read(size=-1):从文件中读取字节,size限制读取的字节数,如果size=-1,则读取全部字节。
readline(size=-1):从文件中读取并返回一行。size是限制读取的行数,如果size=-1,则没有限制。
readlines():读取文件数据到一个字节列表中,每一行数据都是列表的一个元素。
write(b):写入b字节,并返回写入的字节数
writelines(lines):向文件中写入一个字节列表。不添加行分隔符,因此通常为每一行末尾都提供行分隔符
flush():刷新写缓冲区,在文件没有关闭的情况下将数据写入文件中。
示例代码:
with open('test.jpg', 'rb') as f: #rb代表二进制文件模式,类似于rt
b = f.read()
with open('test1.jpg', 'wb') as f1: #wb代表二进制文件模式,类似于wt
f1.write(b)
print('完成图片复制')
发表回复