我是python的新手,并试图逐行读取文件,并在每行末尾附加一个字。 “打印行”表示所需的单词已附加,但没有根据需要将相同的内容写回文件。感谢你的帮助。逐行读取文件并追加字
#!/usr/bin/python
f=open('test1', 'r+')
for line in f:
line=line.strip("\n")
line=line +" " + 'test2'
print line
f.write(line)
f.close()
我是python的新手,并试图逐行读取文件,并在每行末尾附加一个字。 “打印行”表示所需的单词已附加,但没有根据需要将相同的内容写回文件。感谢你的帮助。逐行读取文件并追加字
#!/usr/bin/python
f=open('test1', 'r+')
for line in f:
line=line.strip("\n")
line=line +" " + 'test2'
print line
f.write(line)
f.close()
一般来说,读/同时写一个文件是一个非常可怕的困难的事情得到的权利。通常,您将从一个文件中读取数据并写入其他文件(可能位于内存中)。在内存中的执行将是这样的:
with open('test1', 'r') as fin:
lines = [line.strip('\n') + ' test2\n' for line in fin]
with open('test1', 'w') as fout:
fout.writelines(lines)
请注意,我在第一with
块读取文件的所有数据到内存中。在第二个with
块中,我将所有这些数据写回到一个新文件中(该文件的名称与旧文件的名称相同,有效覆盖旧文件)。当然,如果内存有问题,您可以读取一行,然后将一行写入新文件(使用不同的名称)。关闭并刷新两个文件后,可以使用shutil.move
重命名新文件,以便覆盖旧文件。
mgilson的代码有点不对。更正:
with open("test1", "r") as f:
new_contents = [line.strip() + "test2" for line in f.readlines()]
with open("test1", "w") as f:
f.write("\n".join(new_contents))
mgilson给出的代码非常棒!但是,如果您同时读取和追加,则您请求的功能是不可能的。
我太新了python。 因此,我发现自己更舒适的语法如下。
# read in
f = open('test1', 'r')
newlines = []
for line in f:
newline = line.strip("\n") + " " + 'test2' + "\n"
newlines.append(newline)
print newline,
f.close()
# overwrite the same file
f = open('test1', 'w')
f.writelines(newlines)
f.close()
非常感谢您的支持团队 – user3436288