目录
一、读
1、read方法
格式:f.read() ,其中f为文件变量名,可取其他字符。
为了读取一个文件的内容,调用 f.read(size),这将读取一定数目的数据,然后作为字符串或字节对象返回;size 是一个可选的数字类型的参数。当 size 被忽略或者为负,那么该文件的所有内容都将被读取并且返回。
【代码示例】
# 以读写模式打开文件
f = open('file.txt','r+',encoding = 'utf-8')
# 读取文件前10个字符
char = f.read(10)
print('读取的字符串:%s'%(line))
# 关闭文件
f.close()
2、readline方法
格式:f.readline()
f.readline() 方法会从文件中读取单独的一行,换行符为'\n'。
f.readline() 如果返回一个空字符串,说明已经读取到最后一行。
readline() 方法用于从文件读取整行,包括 '\n' 字符。如果指定了一个非负数的参数,则返回指定大小的字节数,包括 '\n' 字符。
【代码示例】
# 以读写模式打开文件
f = open('file2.txt','r+',encoding = 'utf-8')
# 读取整行
line = f.readline()
print('读取第一行%s'%(line))
# 读取前25个字符
char = f.readline(25)
print('读取的字符串为:%s'%(line))
# 关闭文件
f.close()
3、readlines方法
格式:f.readlines()
f.readlines() 将返回该文件中包含的所有行。如果设置可选参数 sizehint,则读取指定长度的字节,并且将这些字节按行分割。关于 sizehint 参数,可以点击下方链接查看具体详解。(6条消息) 有关 Python 中的 File.readlines(sizehint) 函数_holy_phoenix的博客-CSDN博客https://blog.csdn.net/holy_phoenix/article/details/1616994?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164835271816780366590253%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164835271816780366590253&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-1616994.142^v5^pc_search_insert_es_download,143^v6^register&utm_term=python+readlines%E7%9A%84sizehint%E5%8F%82%E6%95%B0&spm=1018.2226.3001.4187 readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表。
该列表可以由 Python 的 for 循环进行处理,得到一个包含所有行的列表;如果碰到结束符 EOF 则返回空字符串。
【代码示例】
'''以读写模式打开文件'''
f = open('./tmp/foo.txt', 'r+', encoding = 'utf-8')
# 读取文件所有行
str = f.readlines()
print(str)
# 关闭打开的文件
f.close()
'''另一种方式是迭代一个文件对象然后读取每行,如下:'''
# 打开一个文件
f = open('./tmp/foo.txt', 'r', encoding = 'utf-8')
for line in f:
print(line, end = ' ')
# 关闭打开的文件
f.close()
二、写
1、write方法
格式:f.write(string)
f.write(string) 将 string 写入到文件中,然后返回写入的字符数。其中,f 表示已经打开的文件对象;string 表示要写入文件的字符串(或字节串,仅适用写入二进制文件中)。
注意,采用不同的文件打开模式,会直接影响 write() 函数向文件中写入数据的效果。在使用write() 方法向文件中写入数据,需保证使用 open() 函数是以 r+、w、w+、a 或 a+ 的模式打开文件,否则执行 write() 函数会抛出 io.UnsupportedOpertation 错误。
【关于文件打开模式详解见图】
如果打开文件模式中包含 a(追加),则不会清空原有内容,而是将新写入的内容添加到原内容后边。
【代码示例】
'''以只写模式打开文件'''
f = open('file3.txt', 'w')
# 向文件写入数据
char = f.write('I love you,to the moon,and back!')
print(num)
# 关闭打开的文件
f.close()
'''以追加模式打开文件'''
f = open('a.txt', 'a')
# 向文件写入数据
f.write('\n写入一行新数据')
# 关闭打开的文件
f.close()
'''如果要写入一些不是字符串的东西,那么需要先进行转换,如下:'''
# 打开一个文件
f = open ('file4.txt', 'w')
# 将需要写入的内容赋值
value = ('www.baidu.com', 14)
# 进行转换
s = str(value)
# 向文件写入数据
f.write(s)
# 关闭打开的文件
f.close()
在写入文件完成后,一定要调用 close() 函数将打开的文件关闭,否则写入的内容不会保存到文件中。例如,将上述代码中最后一行 f.close() 删掉,再次运行并打开 a.txt 文件,会发现该文件是空的。这是因为当我们在写入文件内容时,操作系统不会立刻把数据写入磁盘,而是先缓存起来,只有调用 close() 函数时,操作系统才会保证把没有写入的数据全部写入磁盘文件中。
当然,如果向文件写入数据后,不想马上关闭文件,也可以调用文件对象提供的 flush() 函数,它可以实现将缓冲区的数据写入文件中。
【代码示例】
# 以只写模式打开文件
f = open('a.txt', 'w')
# 向文件写入数据
f.write('写入一行新数据')
# 将缓冲区的数据写入文件
f.flush()
# 关闭文件
f.close()
有的宝子可能会想到 “通过设置 open() 函数的 buffering 参数可以关闭缓冲区,这样数据不就可以直接写入文件中了么”。对于以二进制格式打开的文件,可以不使用缓冲区,写入的数据会直接进入磁盘文件;但对于以文本格式打开的文件,必须使用缓冲区,否则 Python 解释器会报ValueError 错误,如下述代码。
# 以只写模式打开文件
f = open('a.txt', 'w', buffering = 0)
# 向文件写入数据
f.write('写入一行新数据')
# 关闭文件
f.close()
2、writelines方法
格式:f.writelines()
writelines() 函数,可以实现将字符串列表写入文件中。注意:写入函数只有 write() 和 writelines() 函数,而没有名为 writeline 的函数。通过使用 writelines() 函数,可以轻松实现将文件中的数据复制到其他文件中。
【代码示例】
# 以只读模式打开a文件,赋值给变量a。
a = open('a.txt', 'r')
# 以读写模式打开b文件,赋值给变量b。
b = open('b.txt', 'w+')
# 向b文件写入从a文件读取得数据
b.writelines(a.readlines())
# 关闭b文件
b.close()
# 关闭a文件
a.close()
执行此代码会在 a.txt 文件同级目录下生成一个 b.txt 文件,且该文件中包含得数据和 a.txt 完全一样。需要注意得是,使用 writelines() 函数向文件中写入多行数据时,不会自动给各行添加换行符。上述例子中,之所以 b.txt 文件中会逐行显示数据,是因为 readlines() 函数在读取各行数据时,读入了行尾得换行符。
End ♡