gpt4 book ai didi

python - 如何在python中只删除文件的内容

转载 作者:IT老高 更新时间:2023-10-28 21:50:40 26 4
gpt4 key购买 nike

我有一个包含一些内容的临时文件和一个生成该文件的一些输出的 python 脚本。我希望这重复 N 次,所以我需要重用该文件(实际上是文件数组)。我正在删除整个内容,因此临时文件在下一个周期中将为空。对于删除内容,我使用以下代码:

def deleteContent(pfile):

pfile.seek(0)
pfile.truncate()
pfile.seek(0) # I believe this seek is redundant

return pfile

tempFile=deleteContent(tempFile)

我的问题是:有没有其他(更好、更短或更安全)的方法来删除整个内容而不实际从磁盘中删除临时文件?

类似于 tempFile.truncateAll()?

最佳答案

How to delete only the content of file in python

有几种方法可以将文件的逻辑大小设置为 0,具体取决于您访问该文件的方式:

清空打开的文件:

def deleteContent(pfile):
pfile.seek(0)
pfile.truncate()

清空一个文件描述符已知的打开文件:

def deleteContent(fd):
os.ftruncate(fd, 0)
os.lseek(fd, 0, os.SEEK_SET)

清空已关闭的文件(其名称已知)

def deleteContent(fName):
with open(fName, "w"):
pass


I have a temporary file with some content [...] I need to reuse that file

话虽如此,在一般情况下重用临时文件可能效率不高,也不可取。除非您有非常特殊的需求,否则您应该考虑使用 tempfile.TemporaryFile和一个上下文管理器,几乎可以透明地创建/使用/删除您的临时文件:

import tempfile

with tempfile.TemporaryFile() as temp:
# do whatever you want with `temp`

# <- `tempfile` guarantees the file being both closed *and* deleted
# on the exit of the context manager

关于python - 如何在python中只删除文件的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17126037/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com