2013-11-28 11 views

Antwort

8
s = '123' 
with open('out', 'w') as out_file: 
    with open('in', 'r') as in_file: 
     for line in in_file: 
      out_file.write(line.rstrip('\n') + s + '\n') 
+0

geändert entsprechend, danke –

+0

Ich habe dies versucht und anstatt die Zeichenfolge fügt es in eine andere Zeile. Bitte beachten Sie, dass in der Zeile eine IP steht. Also sollte es 127.0.0.1 string statt 127.0.0.1 (return/enter) string sein. – Pcntl

+0

rechts, undatiert nochmal –

2
def add_str_to_lines(f_name, str_to_add): 
    with open(f_name, "r") as f: 
     lines = f.readlines() 
     for index, line in enumerate(lines): 
      lines[index] = line.strip() + str_to_add + "\n" 

    with open(f_name, "w") as f: 
     for line in lines: 
      f.write(line) 

if __name__ == "__main__": 
    str_to_add = " foo" 
    f_name = "test" 
    add_str_to_lines(f_name=f_name, str_to_add=str_to_add) 

    with open(f_name, "r") as f: 
     print(f.read()) 
8

Denken Sie daran, die + Operator Strings zu komponieren ist langsam. Fügen Sie stattdessen Listen hinzu.

output = "" 
file_name = "testlorem" 
string_to_add = "added" 

with open(file_name, 'r') as f: 
    file_lines = [''.join([x.strip(), string_to_add, '\n']) for x in f.readlines()] 

with open(file_name, 'w') as f: 
    f.writelines(file_lines) 
+0

Könnte es besser sein, wenn '' '['' .join ([x.strip(), string_to_add, '\ n']) für x in f]' ''? – lerner

Verwandte Themen