Добавление строки в файл (python) - PullRequest
0 голосов
/ 01 декабря 2019

Я хочу добавить некоторую строку в каждую строку в файле, содержимое файла: (list.txt)

songs
flower

что я хочу сделать: (! И я не хочу добавлять их вфайл (list.txt) просто хочу напечатать в терминале)

newsongs
oldsongs
newflower
oldflower

код, который я пробовал:

file = open("list.txt")

for i in file:
   new = "new"+i
   print(new)

for i in file:
   old = "old"+i
   print(old)

o / p Я получаю:

newsongs
newflower

что я ожидаю:

newsongs
oldsongs
newflower
oldflower

Ответы [ 2 ]

0 голосов
/ 01 декабря 2019

Попробуйте:

with open("list.txt", "r") as file:
    org_lines = [i.strip() for i in file.readlines() if i.strip()]
output = []
for i in org_lines:
    output.append('new'+i+'\nold'+i)
with open("new_file.txt", "w") as f:
    f.write('\n'.join(output))

Сначала прочитайте все строки и поместите их в список org_lines. Теперь для каждого элемента в этом списке (который в конечном итоге является строкой из исходного файла), добавьте новую строку с конкатенацией 'new' перед строкой, за которой следует константа 'old' перед строкой, в другой новый список. Теперь объедините этот недавно созданный список с новой строкой и запишите всю строку в другой файл.

0 голосов
/ 01 декабря 2019

Файловый объект является итератором, что означает, что после его исчерпания (повторения в цикле for) он становится пустым. Вы должны иметь возможность вернуться к началу файла, используя метод seek() объекта файла между двумя циклами:

fin = open(infile)

for line in fin:
  print(line)  # do sth here

fin.seek(0)

for line in fin:
  print(line)  # do sth else here

Но это не то, что вам нужно. Вам просто нужно создать две новые строки для каждой прочитанной строки файла и распечатать их:

for line in fin:
  print('something +', line)
  print('something else +', line)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...