Если вы хотите запустить код из пользовательского ввода (содержимое файла вводится), вам понадобится eval
или exec
, по этим именам или каким-либо другим (в частности, вам нужно exec
для операторов - назначение заявление).
Но вы не хотите (и не должны) этого делать, потому что это зло, небезопасно, совершенно ненужно и т. Д. Отбросьте назначение (просто сохраните dict) и вызов re.compile
, затем вы можете использовать ast.literal_eval
, и вы в полной безопасности (вам все равно нужно отлавливать синтаксические ошибки и все остальное, что может пойти не так, чтобы отобразить разумное сообщение об ошибке, но вредоносный код должен быть почти невозможным, и он не настолько грязный) Вы можете применить re.compile
после загрузки, если вам это нужно.