创建临时文件及文件夹

创建临时文件及文件夹

      • 创建临时文件存储数据
        • 1、临时文件的读取以光标为准
        • 2、光标后存在内容,会进行文本覆盖
        • 3、临时文件销毁后不能再进行二次读写
      • 创建临时文件夹

创建临时文件存储数据

在临时文件进行数据读写,需要了解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后,程序运行结束,临时文件夹也被销毁

你可能感兴趣的:(#,Python,自动化办公)