Python flush()方法
使用Python进行文件处理时,可以使用flush方法清空内部缓冲区。在使用close函数关闭文件后,默认情况下文件会自动刷新。flush方法主要用于在不关闭文件的情况下清空缓冲区。
示例1
在这个例子中,我们使用flush方法清空文件的内部缓冲区,然后关闭文件。
步骤
步骤1: 以读取模式打开文件。
步骤2: 使用flush属性清空输入缓冲区。
步骤3: 读取文件的内容。
步骤4: 打印文件的内容。
步骤5: 关闭文件。
示例
#open the file 'hello.txt' in read mode
fo= open("hello.txt", "r")
#flush the buffered content to ensure its written to the file
fo.flush()
#read the contents of the file
fileContent = fo.read()
#print the file contents
print(fileContent)
#close the file
fo.close()
输出
flush之前
flush之后
因此我们推断文件的内容保持不变。
示例2
下面的例子演示了在写入文件并关闭后,在“w”模式下刷新文件的内部缓冲区的用法。内容再次打印到终端上。
步骤
步骤1 : 以写模式打开文件”greet.txt”。
步骤2 : 向文件中写入内容。
步骤3 : 关闭文件。
步骤4 : 读取文件的内容。
步骤5 : 打印内容。
步骤6 : 刷新内部缓冲区。
步骤7 : 关闭文件。
示例
#open the file "greet.txt" in write mode
fo = open("greet.txt", "w")
#write to the file
fo.write("hello tutorials Point Readers!")
#close the file
fo.close()
#open the file "greet.txt" in read mode
fo = open("greet.txt", "r")
#read the contents of the file
fileContent = fo.read()
#print the contents read
print("\nBefore flushing: ", fileContent)
#flush the buffered content to ensure its written to the file
fo.flush()
#read the contents of the file after flushing
fileContent = fo.read()
#print the contents of the file
print("\nAfter flushing:", fileContent)
#close the file
fo.close()
输出
flush前:
flush后:
文件以写模式打开,所以写入的内容仍在内部缓冲区中。刷新时,输入缓冲区被清空。因此,刷新后没有打印任何内容。
示例3
下面的示例演示了在csv文件中使用flush()的用法,其中在关闭之前清空了文件的内部缓冲区。内容将被打印到终端上。
步骤
步骤1 :以附加模式打开文件”data.csv”。
步骤2 :向文件中写入内容。
步骤3 :以读取二进制模式打开文件,并使用另一个文件指针变量myfile。
步骤4 :读取文件的内容。
步骤5 :打印csv文件的现有内容。
步骤6 :向文件中写入另一行。
步骤7 :刷新文件。
示例
#import csv
import csv
#open the file "data1.csv" in append mode
fp = open("data1.csv", "a")
#create a csv.writer object
wp = csv.writer(fp)
#open the file "data1.csv" in read and write mode
myfile = open("data1.csv", "r+")
#create a csv.reader object
myreader = csv.reader(myfile)
#iterate over each row in the file using the reader object
for i in myreader:
print(i)
#write a new row to the file using the writer object
wp.writerow(["999", "2023-05-23"])
#flush any buffered data to ensure it is written to the file
fp.flush()
#print the contents after flushing
print("after flushing")
#move the file pointer to the beginning of the file
myfile.seek(0)
for j in myreader:
print(j)
输出
flush之前
flush之后
CSV文件被读取并打印出数据。然后一行数值被写入文件并使用flush方法。输出结果显示,在冲洗后被写入文件的数值被擦除,而现有内容保持不变。
结论
操作系统缓冲区用于向文件写入数据。这些缓冲区存储要写入的数据,并在将内容写入文件后将其清除。flush()属性允许我们清除这些缓冲区中的内容。这样我们就可以撤消关闭文件之前执行的操作。内容被冲洗,文件的保存内容被读取。