3

ipythonノートブックの代わりにspyderを使用してプログラムを実行しようとしています.現在、実行速度が速いためです. データは次を使用してインポートおよび抽出されます。

run util/file_reader.py C:/file_address

明らかに、実行コマンドは通常の python では機能せず、同等のものを見つけることができません。ここで ipython マジック コマンドの Q&A を置き換える方法をさまざまに調べましたが、実行コマンドのものが見つかりません。 ..

通常の Python で同等に機能するモジュールまたはコードのセットはありますか?

4

1 に答える 1

2

あなたが望むものは少し奇妙です。正確には、run マジックは、指定されたファイルを現在の ipython 名前空間で__main__モジュールであるかのように実行します。まったく同じ効果を得るには、少し努力が必要です。

with open("util/file_reader.py") as f:
    src = f.read()

# set command line arguments
import sys
sys.argv = ["file_reader.py", "C:/file_address"]

# use "__main__.py" as file name, so module thinks its the main module
code = compile(src, "__main__.py", "exec")
exec(code)

でメイン関数を定義しfile_reader.py、ファイルの最後でそれを呼び出す方が簡単で優れている場合if __name__ == "__main__":

例えば。

ユーティリティ/file_reader.py

def main(filename):
    print(filename)

if __name__ == "__main__":
    import sys
    main(sys.argv[1])

したがって、このモジュールをインポートしてから関数を呼び出すことで、このモジュールのコードを簡単に実行できますmain

例えば。

import util.file_reader

util.file_reader.main("C:/file_address")
于 2015-11-13T12:00:07.303 に答える