ファイル foo.py があり、そのファイル内でファイル bar.py を実行したいとします。しかし、bar.py は foo.py と同じディレクトリではなく、baz というサブディレクトリにあります。execfile
うまくいきますか?どうos.system
ですか?
3 に答える
空の__init__.py
ファイルを追加してシグナルbaz
がモジュールであり、foo.py
doから:
from baz import bar
もちろん、baz
モジュールにしない (そして execfile を使用する) 正当な理由がある場合を除きます。
sysをインポートし、実行時にパスを追加して「sys.path」を変更し、次に役立つモジュールをインポートします
質問は、これらをスクリプトとして実行することを意味するので、はい: 2.X またはサブプロセスで execfile を使用できます(インタープリターを呼び出し、スクリプトを引数として渡します)。ファイルへの絶対パスを指定するだけです。
# Python 2.X only!
execfile ('c:/python/scripts/foo/baz/baz.py')
もちろん、文字通りそれを行うことはもろいです。baz が常に foo のサブディレクトリである場合、foo のファイルから派生させることができます:
baz_dir = os.path.join(os.path.dirname(__file__), "baz")
baz_file = os.path.join(baz_dir, "baz.py")
execfile(baz_file)
両方のファイルが Python から見える場所にある場合、つまりフォルダーがsys.pathにあるか、 siteを使用して検索パスに追加されている場合は、foo から baz をインポートしてその関数を直接呼び出すことができます。アクションをトリガーするだけでなく、baz からの情報に基づいて実際にアクションを実行する必要がある場合は、これがより適切な方法です。 各フォルダーにinit .pyがある限り、あなたはただ行うことができます
import baz
baz.do_a_function_defined_in_baz()