Я экспериментировал с путями хранения некоторых переменных из моего проекта python в текстовом файле, доступном для чтения/редактирования. Текстовый файл выкладывается так:Прочитать список из текстового файла
a = "hello"
b = 123
c = [4,5,6]
Как вы можете видеть, предназначается, чтобы быть строкой, а целое, и с списка. Код, который я до сих пор идет следующим образом:
for line in file:
name = line.split('=')[0]
value = line.split('=')[1]
vars()[name] = value
Он разбивает строку в «=» и задает первый раздел в качестве имени переменной, а второй раздел в качестве значения этой переменной.
Однако, когда программа запускается, вместо того, чтобы выходить как целое число и список, b (123) и c ([4,5,6]) оба сохраняются как строки.
Есть ли способ преобразовать строки в их соответствующие типы? Или их лучший (но все же простой) способ делать то, что я пытаюсь сделать?
Любая помощь будет высоко оценена. Благодаря!
Вы можете использовать 'eval', но есть груды угроз безопасности. – matsjoyce
Посмотрите на ['ast.literal_eval'] (https://docs.python.org/3/library/ast.html#ast.literal_eval). В отличие от 'eval', он безопасен в использовании. – 5gon12eder
может быть просто сделать функцию, которая говорит «эй, это список?» используя 'line.startswith (' [') '(или даже регулярные выражения, такие как босс), а затем используйте строковое управление для его сортировки и, в конце концов, int() для строковых ints, чтобы их окончательно преобразовать ...... было бы безопаснее, чем eval/exec, но на самом деле требуется работа – TehTris