質問に答えるには、eval
を使用して任意の文字列を取得し、それをPythonコードとして評価します。あるいは、exec
を使用して任意の文字列をPython式として実行することもできます。一般的に
、それはそれはあなたのプログラムが脆弱になりますように、これを行うにはをお勧めしません - 誰かがあなたのコードは、このeval
またはexec
機能を使用していた知っていたことを想像し、悪意のあるユーザーが自分の設定ファイルにいくつかのPythonコードを挿入することができあなたのシステムは本当にダメージを与えます。
むしろ、あなたがしたいことは、ユーザーの設定ファイルを解析し、変数を適切に設定することだと思います。たとえば:
# file configParser.py
userfile = 'users_file.txt'
values = {}
with open(userfile, 'r') as infile:
for line in userfile:
name, value = line.strip().split('=')
values[name] = value
あなたは、後でこれらの値にアクセスするにはvalues
辞書を使用することができます格納された値が文字列であることを
values['N_a'] # holds '2'
values['N_b'] # holds '5'
# etc...
注意を。あなたはint
またはfloat
sまたはw/eに変換できます。
このアプローチでは、常に行がvariable_name = value
というパターンで構成されていることを前提としています。ユーザーがこのパターンから逸脱した場合、または無効な値を指定した場合、パーサーはクラッシュする可能性があります。 configparser
のようなモジュールが用意されており、ユーザーがプログラムにデータを提供するために使用できる設定ファイル形式を指定できるようになっています。
あなたは 'configparser'モジュールの使用を検討しましたか?設定ファイルは、モジュールで説明されている構文を使用して作成し、それを解析するために使用できます。 – chapelo