2013-07-03 28 views
0

我需要打开一个文件来读取每一行,然后在每行的末尾添加一个字符串。 然后,回写新行打开的文件。如何读取和添加stirng并在Python中写回每行?

number = 0 
    with open("test_openFile.txt", "r+b") as the_file: 
    for line in the_file: 
     print (line) 
     type(line) 
     line = line.strip('\n') + "\t" + str(number) 
     number += 1 
     the_file.write(line) 

但是,我得到:

line = line.strip('\n') 
    TypeError: Type str doesn't support the buffer API 

任何帮助,将不胜感激!

+0

你有意在二进制模式下打开它吗? – TerryA

回答

2

尝试像这样

import fileinput 

for line in fileinput.input("myfile.txt", inplace=1): 
    print line.strip() + " a cool string" 

,将“一个很酷的字符串”添加到每一行

+0

用于'fileinput'的+1。但格式字符串似乎没有用处。 – FMc

+0

你说对了,我一直难以让换行符玩得很好......修复。 – John

+0

如何将新行写回文件?谢谢 – user2420472

0

结束试试这个:

import os 
fd_r=open('whatever.txt','r').readlines() 
fd_w=open('whatever.txt','w') 

for line in fd_r: 
    line=line.strip()+" adding 1234" 
    fd_w.write(line+"\n") 
fd_w.close() 

这将追加字符串“加入1234“到每一行。

+0

如果文件大小非常大,fd_r(一个字符串)会非常大,内存使用效率不高,对不对?谢谢 ! – user2420472

+0

是的..如果内存是问题,然后使用fileinput将创建一个临时文件写入修改后的行,并结束将移动临时文件与原始文件名。您必须根据您的要求选择内存或临时文件。 – RakeshSJoshi

+0

这取决于临时文件的大小,在完成所有写入后,临时文件会覆盖原始文件?对 ? – user2420472

相关问题