我有一个文本文件。我想用python v3.6逐行读取文本文件,用子串追加每一行,并用逐行替换现有的行。
更清楚的是,这是原始文本文件;
1,2,3
4,5,6
所需的输出文本文件应如下所示;
appended_text,1,2,3
appended_text,4,5,6
这就是我的代码的样子;
with open(filename, 'r+') as myfile:
for line in myfile:
newline = "appended_text" + "," + line
myfile.write(newline)
我没得到我想要的东西。我得到的是在文件末尾附加的大量文本。如何修改代码?有没有更好的方法来实现我想要的东西?
答案 0 :(得分:4)
没有"取代现有的行"在一个文件中。对于您想要执行的操作,您必须使用修改后的内容编写新文件,然后使用新文件替换旧文件。示例代码:
with open("old.file") as old, open("new.file", "w") as new:
for line in old:
line = modify(line.lstrip())
new.write(line + "\n")
os.rename("new.file", "old.file")
答案 1 :(得分:2)
通常,您不能像这样修改文件。而是将副本写入新文件,然后将原始文件替换为新文件。
<div className="Device" onClick={this.props.onClick}>
答案 2 :(得分:1)
以下是我要做的事情:
with open(filename, 'r+') as f:
lines = []
for line in f:
lines.append("appended_text" + "," + line)
f.seek(0)
for line in lines:
f.write(line)
例如:
sample.txt之前:
hello
there
world
<强>码强>
fp = r"C:\Users\Me\Desktop\sample.txt"
with open(fp, 'r+') as f:
lines = []
for line in f:
lines.append("something," + line)
lines.append(line.strip() + ",something\n")
f.seek(0)
for line in lines:
f.write(line)
sample.txt之后:
something,hello
hello,something
something,there
there,something
something,world
world,something
几点说明:
'\n'
)与每行的原始内容保持一致。如果你要追加到最后,我会改为:lines.append(line.strip() + "," + "appended_text")
。"appended_text"
和","
合并到"appended_text,"
。除非"appended_text"
是appended_text = "something"
答案 3 :(得分:1)
如果要将其写入同一文件:
f = open(filename, 'r')
lines = f.readlines()
f.close()
lines = ['appended_text, ' + l for l in lines]
f = open(filename, 'w')
f.writelines(lines)
f.close()
答案 4 :(得分:-1)
我相信您需要在myfile.readlines()
循环之前放置for
。