我的代码逐行读取和替换python文本文件有什么问题?

时间:2017-09-28 11:49:25

标签: python python-3.x replace

我有一个文本文件。我想用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)

我没得到我想要的东西。我得到的是在文件末尾附加的大量文本。如何修改代码?有没有更好的方法来实现我想要的东西?

5 个答案:

答案 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

几点说明:

  1. 这假设您要附加到每行的前面。因此,换行符('\n')与每行的原始内容保持一致。如果你要追加到最后,我会改为:lines.append(line.strip() + "," + "appended_text")
  2. 您可以将"appended_text"","合并到"appended_text,"。除非"appended_text"appended_text = "something"
  3. 之类的可变量
  4. 虽然在语境上是正确的,但作为问题的解决方案;我希望编写一个包含所需更改的新文件,并在其他答案中推荐使用新文件替换旧文件。

答案 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