开发者社区> 问答> 正文

创建临时文件和文件夹

你需要在程序执行时创建一个临时文件或目录,并希望使用完之后可以自动销毁掉。

展开
收起
哦哦喔 2020-04-17 12:30:49 791 0
1 条回答
写回答
取消 提交回答
  • tempfile 模块中有很多的函数可以完成这任务。 为了创建一个匿名的临时文件,可以使用 tempfile.TemporaryFile :
    
    from tempfile import TemporaryFile
    
    with TemporaryFile('w+t') as f:
        # Read/write to the file
        f.write('Hello World\n')
        f.write('Testing\n')
    
        # Seek back to beginning and read the data
        f.seek(0)
        data = f.read()
    
    # Temporary file is destroyed
    或者,如果你喜欢,你还可以像这样使用临时文件:
    
    f = TemporaryFile('w+t')
    # Use the temporary file
    ...
    f.close()
    # File is destroyed
    TemporaryFile() 的第一个参数是文件模式,通常来讲文本模式使用 w+t ,二进制模式使用 w+b 。 这个模式同时支持读和写操作,在这里是很有用的,因为当你关闭文件去改变模式的时候,文件实际上已经不存在了。 TemporaryFile() 另外还支持跟内置的 open() 函数一样的参数。比如:
    
    with TemporaryFile('w+t', encoding='utf-8', errors='ignore') as f:
        ...
    在大多数Unix系统上,通过 TemporaryFile() 创建的文件都是匿名的,甚至连目录都没有。 如果你想打破这个限制,可以使用 NamedTemporaryFile() 来代替。比如:
    
    from tempfile import NamedTemporaryFile
    
    with NamedTemporaryFile('w+t') as f:
        print('filename is:', f.name)
        ...
    
    # File automatically destroyed
    这里,被打开文件的 f.name 属性包含了该临时文件的文件名。 当你需要将文件名传递给其他代码来打开这个文件的时候,这个就很有用了。 和 TemporaryFile() 一样,结果文件关闭时会被自动删除掉。 如果你不想这么做,可以传递一个关键字参数 delete=False 即可。比如:
    
    with NamedTemporaryFile('w+t', delete=False) as f:
        print('filename is:', f.name)
        ...
    为了创建一个临时目录,可以使用 tempfile.TemporaryDirectory() 。比如:
    
    from tempfile import TemporaryDirectory
    
    with TemporaryDirectory() as dirname:
        print('dirname is:', dirname)
        # Use the directory
        ...
    # Directory and all contents destroyed
    
    2020-04-17 12:30:59
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载