文件读写

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('完成图片复制')

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注