在临时文件进行数据读写,需要了解Python读写文件以及 tempfile 模块
from tempfile import TemporaryFile
f = TemporaryFile('w+')
# w+ 表示写入及读取文件
f.write('Hello world!')
data1 = f.readlines()
print(data1)
# 输出结果 []
此时光标位于 'Hello world! ’ 的感叹号后,所以临时文件的读取的时候没有读取到内容
from tempfile import TemporaryFile
f = TemporaryFile('w+')
f.write('Hello world!\n')
f.write('Hello bobo!')
f.seek(0)
# .seek(0)表示回到文件开头位置,若没有该语句,
# 则光标位于 Hello bobo!感叹号后,读取时读取内容为空
data = f.readlines()
print(data)
f.close()
# 程序运行完后会自动删掉临时文件
# 运行结果:['Hello world!\n', 'Hello bobo!']
from tempfile import TemporaryFile
f = TemporaryFile('w+')
f.write('Hello world!\n')
data1 = f.readlines()
print(data1)
f.seek(0)
f.write('Hello bobo!')
f.seek(0)
data2 = f.readlines()
print(data2)
输出结果:
[]
['Hello bobo!!\n']
可以发现,第一次写完'Hello world!\n'后,光标没有回到文件开头,
进行第一次读取时,光标位于 \n后,所以读取的为空;
光标回到文件开头后,再进行第二次写操作时,,所以进行了文本覆盖
from tempfile import TemporaryFile
f = TemporaryFile('w+')
f.write('Hello world!\n')
f.seek(0)
data1 = f.readlines()
print(data1)
f.write('Hello bobo!')
f.seek(0)
data2 = f.readlines()
print(data2)
输出结果:
['Hello world!\n']
['Hello world!\n', 'Hello bobo!']
可以发现,第一次写完'Hello world!\n'后,光标回到了文件开头,
进行第一次读取后,光标位于 \n后;
然后再进行第二次写操作时,光标位于是 \n后,所以没有进行文本覆盖
from tempfile import TemporaryFile
with TemporaryFile('w+') as f:
f.write('Hello world!\n')
f.seek(0)
data1 = f.readlines()
print(data1)
f.write('Hello bobo!')
f.seek(0)
data2 = f.readlines()
print(data2)
输出结果:
['Hello world!\n']
Traceback (most recent call last):
File "/media/bobo/648CEBCD8CEB9836/Python/自动化办公/temporaryFile模块/temporaryDirectoryDemo2.py", line 17, in <module>
f.write('Hello bobo!')
ValueError: I/O operation on closed file.
可以发现,with语句结束后,临时文件已销毁,所以再次读写会报错
import time
from tempfile import TemporaryDirectory
with TemporaryDirectory() as tmp_folder:
print(f'临时文件夹已创建:{tmp_folder}')
time.sleep(60)
print('此语句打印后临时文件夹将销毁')
print('临时文件夹已销毁')
# 程序结束后会自动删掉该文件夹
# 输出结果 临时文件夹已创建:/tmp/tmpnc3coasa
可根据输出的路径去 /tmp文件夹下查找,可以发现,60s后,程序运行结束,临时文件夹也被销毁