python清除在同一文件上写入的内容

python清除在同一文件上写入的内容,python,Python,我是python的新手。我有一个代码,其中我必须将内容再次写入同一个文件,但当我这样做时,它会清除我的内容。请帮助修复它 我应该如何修改代码,以便将内容写回同一个文件 我的代码: import re numbers = {} with open('1.txt') as f,open('11.txt', 'w') as f1: for line in f: row = re.split(r'(\d+)', line.strip()) words = tup

我是python的新手。我有一个代码,其中我必须将内容再次写入同一个文件,但当我这样做时,它会清除我的内容。请帮助修复它

我应该如何修改代码,以便将内容写回同一个文件

我的代码:

import re

numbers = {}
with open('1.txt') as f,open('11.txt', 'w') as f1:
    for line in f:
        row = re.split(r'(\d+)', line.strip())
        words = tuple(row[::2])
        if words not in numbers:
            numbers[words] = [int(n) for n in row[1::2]]
        numbers[words] = [n+1 for n in numbers[words]]
        row[1::2] = map(str, numbers[words])

        indentation = (re.match(r"\s*", line).group())
        print (indentation + ''.join(row))
        f1.write(indentation + ''.join(row) + '\n')        
使用

附加到文件而不是w以进行写入(新文件或覆盖文件)。

使用

附加到文件而不是w以进行写入(新文件或覆盖文件)。

使用

附加到文件而不是w以进行写入(新文件或覆盖文件)。

使用


附加到文件而不是w以进行写入(新文件或覆盖文件)。

一般来说,在仍在处理的文件上写入(或更改正在迭代的数据结构)是个坏主意。它可以做……但它需要很多的照顾,并且在中间有错误(错误,断电等),几乎没有安全性或重新启动能力。 更好的方法是编写一个干净的新文件,然后将其重命名为旧名称。例如:

import re
import os

filename = '1.txt'
tempname = "temp{0}_{1}".format(os.getpid(), filename)
numbers = {}
with open(filename) as f, open(tempname, 'w') as f1:
    # ... file processing as before

os.rename(tempname, filename)
在这里,我将文件名(原始文件名和临时文件名)放入变量中,这样就可以方便地多次引用或更改它们。这也为您将此代码提升到函数中(作为更大程序的一部分)的时刻做好了准备,而不是将其作为程序的主线

嵌入进程id并不需要临时名称,但这是确保临时文件唯一命名的标准方法(
temp32939_1.txt
vs
temp_1.txt
tempfile.txt

按照文件在处理之前的样子创建文件备份也可能会有所帮助。在这种情况下,在
os.rename(tempname,filename)
之前,可以插入代码将原始数据移动到更安全的位置或备份名称。例如:

backupname = filename + ".bak"
os.rename(filename, backupname)

os.rename(tempname, filename)

虽然超出了这个问题的范围,但如果您经常使用读取进程覆盖策略,则可以创建一个单独的模块,将这些文件处理细节从处理代码中抽象出来

一般来说,对仍在处理的文件进行重写(或更改正在迭代的数据结构)是个坏主意。它可以做……但它需要很多的照顾,并且在中间有错误(错误,断电等),几乎没有安全性或重新启动能力。 更好的方法是编写一个干净的新文件,然后将其重命名为旧名称。例如:

import re
import os

filename = '1.txt'
tempname = "temp{0}_{1}".format(os.getpid(), filename)
numbers = {}
with open(filename) as f, open(tempname, 'w') as f1:
    # ... file processing as before

os.rename(tempname, filename)
在这里,我将文件名(原始文件名和临时文件名)放入变量中,这样就可以方便地多次引用或更改它们。这也为您将此代码提升到函数中(作为更大程序的一部分)的时刻做好了准备,而不是将其作为程序的主线

嵌入进程id并不需要临时名称,但这是确保临时文件唯一命名的标准方法(
temp32939_1.txt
vs
temp_1.txt
tempfile.txt

按照文件在处理之前的样子创建文件备份也可能会有所帮助。在这种情况下,在
os.rename(tempname,filename)
之前,可以插入代码将原始数据移动到更安全的位置或备份名称。例如:

backupname = filename + ".bak"
os.rename(filename, backupname)

os.rename(tempname, filename)

虽然超出了这个问题的范围,但如果您经常使用读取进程覆盖策略,则可以创建一个单独的模块,将这些文件处理细节从处理代码中抽象出来

一般来说,对仍在处理的文件进行重写(或更改正在迭代的数据结构)是个坏主意。它可以做……但它需要很多的照顾,并且在中间有错误(错误,断电等),几乎没有安全性或重新启动能力。 更好的方法是编写一个干净的新文件,然后将其重命名为旧名称。例如:

import re
import os

filename = '1.txt'
tempname = "temp{0}_{1}".format(os.getpid(), filename)
numbers = {}
with open(filename) as f, open(tempname, 'w') as f1:
    # ... file processing as before

os.rename(tempname, filename)
在这里,我将文件名(原始文件名和临时文件名)放入变量中,这样就可以方便地多次引用或更改它们。这也为您将此代码提升到函数中(作为更大程序的一部分)的时刻做好了准备,而不是将其作为程序的主线

嵌入进程id并不需要临时名称,但这是确保临时文件唯一命名的标准方法(
temp32939_1.txt
vs
temp_1.txt
tempfile.txt

按照文件在处理之前的样子创建文件备份也可能会有所帮助。在这种情况下,在
os.rename(tempname,filename)
之前,可以插入代码将原始数据移动到更安全的位置或备份名称。例如:

backupname = filename + ".bak"
os.rename(filename, backupname)

os.rename(tempname, filename)

虽然超出了这个问题的范围,但如果您经常使用读取进程覆盖策略,则可以创建一个单独的模块,将这些文件处理细节从处理代码中抽象出来

一般来说,对仍在处理的文件进行重写(或更改正在迭代的数据结构)是个坏主意。它可以做……但它需要很多的照顾,并且在中间有错误(错误,断电等),几乎没有安全性或重新启动能力。 更好的方法是编写一个干净的新文件,然后将其重命名为旧名称。例如:

import re
import os

filename = '1.txt'
tempname = "temp{0}_{1}".format(os.getpid(), filename)
numbers = {}
with open(filename) as f, open(tempname, 'w') as f1:
    # ... file processing as before

os.rename(tempname, filename)
在这里,我将文件名(原始文件名和临时文件名)放入变量中,这样就可以方便地多次引用或更改它们。这也为您将此代码提升到函数中(作为更大程序的一部分)的时刻做好了准备,而不是将其作为程序的主线

嵌入进程id并不需要临时名称,但这是确保临时文件唯一命名的标准方法(
temp32939_1.txt
vs
temp_1.txt
tempfile.txt

将文件备份为t也可能有帮助