Вопрос:
Как записать вложенный список из переменной в текстовый файл, чтобы каждый список внутри вложенного списка записывался в свою строку?
Список нужен для компиляции обратно в текстовый файл в точно таком же формате, каким он был до вытягивания функцией f.readfiles()
.
Также принимаются решения, отличные от решений на основе переменных, и решения с несколькими переменными. csv module
тоже вариант, но лучше сначала изучить логику без него.
Введение в проблему
Предположим, что есть text file
, который содержит list
в каждой строке, например:
['some_text','foo', some_int]
['some_text','foo', some_int]
['some_text','foo', some_int]
...
Каждый список содержит несколько пунктов. Все строки должны быть read
из текстового файла в один большой вложенный список и сохранены в variable
следующим образом:
variable = [['some_text','foo', some_int],
['some_text','foo', some_int],
['some_text','foo', some_int]]
Формат информации, хранящейся в переменной выше, не имеет значения. Список, сохраненный в переменной, теперь редактируется с помощью некоторых инструментов списка. Когда редактирование завершено, переменная, содержащая отредактированный список, снова записывается обратно в тот же текстовый файл, перезаписывая все данные новыми измененными данными, например:
['some_text','bar', some_int]
['edited_tx','foo', some_int]
['some_text','foo', edtd_int]
...
Чтение строк
Мне удалось прочитать строки с этим кодом:
with open("my_lists.txt") as f:
listed_text = f.readlines()
Весь текст внутри текстового файла теперь хранится в переменной с именем listed_text, которая к тому времени редактируется с некоторыми список инструментов предпочтительнее.
Подробнее о приведенном выше коде здесь:
Как прочитать строку файла построчно в список?
Неполный пример кода для чтения и записи файла
Это неполный и нерабочий пример кода того, что нужно было сделать со списками.
# Let us open 'my_lists.txt' and read lines
# into a variable as a list.
def open_file():
with open("my_lists.txt") as f:
listed_text = f.readlines()
list_item_editor(listed_text)
# Now let us replace 'foo' every index(1) in
# nested lists with word 'bar' with
# this imaginary editor 'list_item_editor()'.
def list_item_editor(argument):
edited_list = []
for item in nested_list:
nested_list[item][i] = "bar"
...
...
write_file(edited_list)
# Now we write the edited list back to 'my_lists.txt'
# by replacing the whole contents with new edited list.
def write_file(arg):
with open("my_lists.txt", "w") as write_file:
write_file.write(arg)
Предпочтительный выход
Это пример предпочтительного вывода. Каждый элемент (список) внутри вложенного списка записывается в отдельную строку. Метка новой строки \n
не видна внутри текстового файла.
# This is text_file.txt containing edited lists
# New line inserted after every list
['some_text','bar', some_int]
['edited_tx','foo', some_int]
['some_text','foo', edtd_int]
['some_text','bar', some_int]
['edited_tx','foo', some_int]
['some_text','foo', edtd_int]
['some_text','bar', some_int]
['edited_tx','foo', some_int]
['some_text','foo', edtd_int]
['some_text','bar',some_int]
, или это просто пример, но на самом деле вы хотите['some_text','bar',1]
. Или, в частности, если вы запуститеx=1 ; variable=[['foo','bar',x]]
, что именно вы хотите, чтобы ваш файл содержал? - person viraptor   schedule 23.09.2017csv
и иметь строки типаsome_text,bar,5
в файле. - person Mark Tolonen   schedule 23.09.2017csv
, но мне бы очень хотелось изучить и этот модуль. - person Kasperi Koski   schedule 23.09.2017'some_text'
,'bar'
иsome_int
были просто примерами. Значение каждого индекса может быть каким угодно. - person Kasperi Koski   schedule 23.09.2017