#python #file #readlines
#python #файл #строки чтения
Вопрос:
Я пытаюсь прочитать и записать несколько строк текстового файла на Python. Моя цель — указать строки, которые я хочу изменить, с помощью ввода, который я даю скрипту. Скрипт работает при указании одной строки, но не с несколькими строками.
Например, допустим, у меня есть этот файл:
Item 1
Item 2
Item 3
При попытке выполнить следующее для одной строки он работает нормально:
a_file = open("filename.yml", "r")
list_of_lines = a_file.readlines()
list_of_lines[1] = "Item: " (input('Input: ')) "n"
a_file = open("filename.yml", "w")
a_file.writelines(list_of_lines)
a_file.close()
Но я не могу понять, как применить один и тот же ввод для нескольких строк текстового файла.
Что я пробовал, но не сработало:
a_file = open("filename.yml", "r")
list_of_lines = a_file.readlines()
list_of_lines[1][2] = "Item: " (input('some input: ')) "n"
a_file = open("filename.yml", "w")
a_file.writelines(list_of_lines)
a_file.close()
Комментарии:
1.
list_of_lines[1] = ...
,list_of_lines[2] = ...
?2.
list_of_lines
это список строк вашего файла. Вам нужно перебрать этот список, чтобы получить каждую строку одну за другой. Или вы можете получить доступ к каждой строке с их индексом, начинающимся с 0.
Ответ №1:
Ты используешь for
цикл:
with open('file.txt', 'r') as f:
list_of_lines = f.readlines()
t = f"Item {input('some input: ')}n"
for i in range(len(list_of_lines)):
if i in [1, 2]:
list_of_lines[i] = t
with open("file.txt", "w") as f:
f.writelines(list_of_lines)
file.txt
:
Item 1
Item 2
Item 3
Ввод:
some input: hello
В результате file.txt
:
Item 1
Item hello
Item hello
Вы также можете использовать list
понимание с помощью встроенного enumerate
метода:
t = f"Item {input('some input: ')}n"
d = [1, 2]
with open('file.txt', 'r') as f:
list_of_lines = [t if i in d else v for i, v in enumerate(f)]
with open("file.txt", "w") as f:
f.writelines(list_of_lines)
Комментарии:
1. Отличный и подробный ответ. Решил мою проблему и узнал что-то новое сегодня. Большое спасибо!