Python чтение / запись файла упражнения. Как напечатать список в текстовый файл - PullRequest
0 голосов
/ 10 ноября 2019

Впервые на питоне. Кто-нибудь знает, как сделать так, чтобы текстовый файл имел выходные данные из перечисленного списка? В настоящее время я вижу, как это происходит, только если он печатается на консоли, но не могу заставить его печатать в этом формате в текстовом файле.

Например (я знаю, что это неправильный формат, но просто пытаюсь показать ожидаемыйвывод) выводится на консоль, но не в файл.

tv_characters = ["Will Byers", "Tyrion Lannister", "Oliver Queen", "Jean Luc Picard", "Malcom Reynolds", "The Doctor", "Sam Winchester", "Sherlock Holmes"]

for index , character in enumerate(tv_characters):
  f = open("text", "w")
  print("{0}: {1}\n".format(index+1, character))

Предполагается, что при такой настройке он будет иметь функцию печати, но при этом выводится только фамилия в списке.

tv_characters = ["Will Byers", "Tyrion Lannister", "Oliver Queen", "Jean Luc Picard", "Malcom Reynolds", "The Doctor", "Sam Winchester", "Sherlock Holmes"]

# Write out my character list to a file called "text"
for index , character in enumerate(tv_characters):
  f = open("text", "w")
  f.write("{0}: {1}\n".format(index+1, character))
  f.close()

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 10 ноября 2019

В настоящее время вы открываете и закрываете файл в цикле, что является основной причиной.

Используйте with, который автоматически позаботится об открытии и закрытии файла и поместите цикл for под ним:

tv_characters = ['Will Byers', 'Tyrion Lannister', 'Oliver Queen', 'Jean Luc Picard', 'Malcom Reynolds', 'The Doctor', 'Sam Winchester', 'Sherlock Holmes']
with open('text.txt', 'w') as f:
    # Write out my character list to a file called 'text'
    for index, character in enumerate(tv_characters):
      f.write(f'{index+1}: {character}\n')
0 голосов
/ 10 ноября 2019

Я не могу комментировать, поэтому я прошу прощения. Если я правильно понимаю ваш вопрос, это должно помочь! (python3)

# Your char list
tv_characters = ["Will Byers", "Tyrion Lannister", "Oliver Queen", "Jean Luc Picard", "Malcom Reynolds", "The Doctor", "Sam Winchester", "Sherlock Holmes"]

# no need to open and close over and over
f = open("text", "w")

for index, character in enumerate(tv_characters) : f.write(f"{index+1}: {character}\n") # basic one liner

# will close once it's done, cleans up code
f.close()
...