Я читаю, обновляю и записываю следующую отдельную строку данных в отдельный файл fruit.txt
, в этой конкретной структуре и формате:
[["Peach",0,0,0], ["Banana",0,0,0], ["Apple",0,0,0], ["Pear",0,0,0], ["Mango",0,0,0], ["Orange",0,0,0], ["Apricot",0,0,0]]
Когда я делаюэто в начале файла Python
with open("fruit.txt") as file:
fruit = file.read()
Правильно назначает данные в fruit.txt
для fruit
var.Когда я print(fruit)
, он даже выглядит как предполагаемый вложенный список.
Однако, когда я подхожу к запросу fruit
var, например, динамическое изменение 0
с помощью других функций или когда я пытаюсьсортировать вложенный список или делать что-либо для изменения данных, он всегда возвращает различные ошибки.Как будто, когда он устанавливает переменную fruit
для данных из файла, он не распознает его как вложенный список, а скорее как строку.Поэтому я не могу работать с этим списком.
Если, однако, я делаю:
with open("fruit.txt") as file:
fruit_count = file.read()
fruit = eval(fruit_count)
Тогда fruit
var ведет себя нормально - значения обновляются, и этопишет обратно в файл, готовый для дальнейшего использования и т. д.
Я понимаю, eval
теоретически является злом (или, по крайней мере, его следует избегать в большинстве случаев), если вы не доверяете источнику данных (что я и делаю в этом случае),Но мне просто интересно, есть ли другое решение?
В идеале я не хочу использовать какие-либо дополнительные модули, например ast.literal_eval