0

data_file.py --> 以下は data_file.py の内容です

numbers = [1,2,3,4,5]

alpha = ['a','b','c','d','e']

D_num_alpha = dict(zip(numbers,alpha))

new_python.py

data_file = '/Users/user/desktop/data_file.py'
open(data_file,'r').read()
print numbers
>>>NameError: name 'numbers' is not defined

new_python.py 内の data_file.py で作成されたこの辞書を使用しようとしていますが、文字列にしか読み取ることができません。

4

2 に答える 2

3

データ ファイルが python スクリプトである場合、次のようにして代わりにこれをインポートすることができます。

from data_file import numbers

print numbers

インポートしようとしている python ファイルが別のディレクトリにある場合は、もう少し手間がかかるため、次の手順を実行する必要があります。

コードを変更して、モジュールを探す場所を Python に指示します。

import sys
sys.path.append( "path to include directory")
from data_file import numbers

print numbers

__init__.pyインポートするファイルと同じディレクトリに空のファイルを作成します。これは、インポートでフォルダーを使用できるようにすることを python に伝えます。__init__.pyオーバーが必要な理由については、こちらのドキュメントを参照してください。

別のディレクトリからインポートする方法をpythonに伝えたい場合があるいくつかの異なる方法があることに注意してください。詳細については、この質問を参照してください。

相対インポートに関するこの PEP も参照してください。

eval()後で問題を引き起こす可能性のある厄介な方法は必要ありません。

于 2013-11-15T00:01:02.280 に答える
2

どちらのスクリプトも改ざんされないことが確実な場合は、eval().

コードは次のようになります。

data_file = '/Users/user/desktop/data_file.py'
eval(open(data_file,'r').read())
print numbers

編集: 別の方法は、data_file.py をモジュールとしてインポートすることです。data_file.py入っている場合/path/to/data

import sys
sys.path.append('/path/to/data')
import data_file

print data_file.numbers

data_file.py全体を評価したくない特別な理由がない限り、これはより良いアプローチです。

于 2013-11-14T23:58:08.370 に答える