python清除在同一文件上写入的内容
我是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
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
vstemp_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
vstemp_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
vstemp_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
vstemp_1.txt
或tempfile.txt
)
将文件备份为t也可能有帮助