py tmpfile.md

用于创建临时文件或者临时文件夹

import tempfile


# 创建临时文件
def test_mkstemp():
    # 说明:该方法仅仅创建一个临时文件;返回包含两个元素的元组,
    # 第一个元素指操作该临时文件的安全级别,第二个元素指该临时文件的路径
    file = tempfile.mkstemp(suffix=".txt", prefix="tmp", dir="./tmp", text=True)
    print(file)
    with open(file[0], "w+") as f:
        f.write("aaa\nbbb")
        f.seek(0)
        print(f.readlines())


def test_TemporaryFile():
    # 说明:该方法返回一个文件对象用于临时数据保存,它没有文件名字,你也找不到它所在的位置;
    # 当文件对象被close或者被del的时候,临时文件将从磁盘上删除。
    temp = tempfile.TemporaryFile()  # 参数同上
    try:
        print('temp:', temp)
        print('temp.name:', temp.name)
        # 写入
        temp.write(b"hello world\n")
        temp.seek(0)
        # 读取
        print('temp.read:', temp.read())
    finally:
        # 自动清除文件
        temp.close()


def test_NamedTemporaryFile():
    # 说明:同tempfile.TemporaryFile类似,主要区别就是多了个delete参数,
    # 用于指定文件对象close或者被del之后,是否也一同删除磁盘上的临时文件
    # (当delete = True的时候,即默认的时候行为与TemporaryFile一样)。
    temp = tempfile.NamedTemporaryFile(suffix='.sh', prefix='script_', dir='/tmp')
    try:
        temp.write(b'aaaa\n')
        # 指定从什么位置写入
        temp.seek(0)
        print(temp.read())
    finally:
        # 自动清除文件,因为delete参数默认是True
        temp.close()


# seek有三种写入模式:seek(offset,where): where=0从起始位置移动,1从当前位置移动,2从结束位置移动。

def test_SpooledTemporaryFile():
    # 将 BytesIO或者StringIO转换成临时文件
    file = tempfile.SpooledTemporaryFile()
    file.write(b"asdasdasd")
    file.seek(0)
    print(file.read())


def test_mkdtemp():
    path = tempfile.mkdtemp("tmptmp")
    print(path)  # 要手动处理文件夹删除

仅供参考
目录