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解决了这个问题,所有行都使用逗号,修改行不使用逗号。