创建临时文件及文件夹

创建临时文件存储数据

在临时文件进行数据读写,需要了解Python读写文件以及 tempfile 模块

1、临时文件的读取以光标为准
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!']
2、光标后存在内容,会进行文本覆盖
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后,所以没有进行文本覆盖

3、临时文件销毁后不能再进行二次读写
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后,程序运行结束,临时文件夹也被销毁

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值