Python不在文件中写入
替换文件中的行时出现问题。不确定更改是否未写入文件或数据行未被替换。 以下是我如何尝试做到这一点:Python不在文件中写入,python,file,io,Python,File,Io,替换文件中的行时出现问题。不确定更改是否未写入文件或数据行未被替换。 以下是我如何尝试做到这一点: filename = "filename.txt" f = open(filename, "r+") lines = [line1, line2, line3] for line in lines: data = f.read() new_line = "some new line" data.replace(line, new_line) f.write(data)
filename = "filename.txt"
f = open(filename, "r+")
lines = [line1, line2, line3]
for line in lines:
data = f.read()
new_line = "some new line"
data.replace(line, new_line)
f.write(data)
f.close()
问题出在哪里?替换函数不会对对象本身进行更改,但会返回一个新字符串。因此,您需要的是:
data = data.replace(line, new_line)
根据Roger的评论,您的代码应该如下所示:
filename = "filename.txt"
f = open(filename, "r+")
lines = [line1, line2, line3]
data = f.read()
for line in lines:
new_line = "some new line"
data = data.replace(line, new_line)
f.write(data)
f.close()
希望能有帮助
import fileinput
for line in fileinput.input( filename , inplace = 1 ):
print line.replace("SOMETHING", "SOMETHING ELSE" ), # catch for double line breaks
用于内联编辑文件 当您只打开文件进行读取时,您希望看到什么?根据官方文件,使用w而不是r+。«“r+”打开文件进行读写»发布的代码是您的实际代码吗?那么什么是[line1,line2,line3]?这是简化版。我想改变一些线条的样式。在这里,我将它们指定为第1行、第2行、第3行。是的,很抱歉。这就是我在不进行研究的情况下发表评论所得到的结果。还要将“data=f.read”移到循环之外,否则每次都会重置数据。@Roger Right,我没有意识到这一点。除了在行之间添加额外“\n”的问题。我使用print解决了这个问题,所有行都使用逗号,修改行不使用逗号。