我有一个文本文件,我想在Python中擦除。我怎么做呢?


当前回答

这是我的方法:

使用r+模式打开文件 使用file. Read()从文件中读取当前数据 使用file.seek(0)将指针移到第一行 使用file.truncate(0)从文件中删除旧数据 先写新内容,再写之前用file.read()保存的内容

所以完整的代码是这样的:

with open(file_name, 'r+') as file:
   old_data = file.read()
   file.seek(0)
   file.truncate(0)

   file.write('my new content\n')
   file.write(old_data)

因为我们使用的是打开,文件会自动关闭。

其他回答

当使用open("myfile.txt", "r+")作为my_file:时,我在myfile.txt中得到奇怪的0,特别是因为我先读取文件。为了让它工作,我必须首先用my_file.seek(0)将my_file的指针更改为文件的开头。然后我可以执行my_file.truncate()来清除文件。

在python中:

open('file.txt', 'w').close()

或者,如果你已经打开了一个文件:

f = open('file.txt', 'r+')
f.truncate(0) # need '0' when using r+

除非需要删除文件的结尾,否则不能就地“擦除”文件。要么满足于覆盖一个“空”值,要么读取文件中您关心的部分并将其写入另一个文件。

正如@jamylak所建议的,包含上下文管理器优点的一个好的替代方案是:

with open('filename.txt', 'w'):
    pass

写入和读取文件内容

def writeTempFile(text = None):
    filePath = "/temp/file1.txt"
    if not text:                      # If not provided return file content
        f = open(filePath, "r")
        slug = f.read()
        return slug
    else:
        f = open(filePath, "a") # Create a blank file
        f.seek(0)  # sets  point at the beginning of the file
        f.truncate()  # Clear previous content
        f.write(text) # Write file
        f.close() # Close file
        return text

这对我很有效