2011-01-07 16 views
37

通常、Pythonスクリプトは、たとえばpython myscript.pyのように実行できますが、対話モードではPythonスクリプトをどのように実行することができますかファイルシステム上で?対話モードでPythonスクリプトを実行する可能性はありますか?

>>> exec(ファイル)???

スクリプトを複数回実行する必要があります。

+2

なぜ 'myscript.py 'に適切な「main」関数がないのですか?なぜあなたは 'myscript'と' myscript.main() 'をインポートできませんか?これが通常のアプローチです。なぜそれは動作しませんか?適切な "main"関数を追加するためにmyscriptを修正できますか? –

+0

問題は、 "paster shell"を読み込んでいて、この他のプロジェクトライブラリをロードしている間に読み込まれていることです。このインタラクティブなシェルでいくつかのことを試してみたい。しかし、はい、あなたの提案は良いことです。 – lennykey

+3

これはあなたが質問したように質問に答えることはできませんが、あなたや他の人に関連する場合には、私が積極的に開発しているときにこれが便利です: 'PYTHONSTARTUP = some_script.py python -i'です。これにより、some_script.pyが実行され、対話型シェルに移動します。作業スクリプトがローカル変数を定義している場合は、シェルからそれらにアクセスできます。実際にコードを実験したり、振る舞いを分析しようとすると、これは本当に便利です。 – Mark

答えて

35

いますが、あなたはより強力な対話型シェル、IPythonに見たいと思うかもしれませんthis

+0

Thx。私はこれが私のために働いていると思うし、最小限の設定の定型文を持って – lennykey

22

import fileを.py拡張子なしで実行しますが、__name__"__main__"ではありません。スクリプトが対話的に実行されているかどうかを確認するには、バイパスする必要があります。

代わりに、あなたは環境を見てしたいとしている場合、スクリプトはpython -i script.py

EDITしてみてください実行した後:あなたが使用して任意のシステムコマンドを実行することができ、再び

file = reload(file)

+3

'また、スクリプトの実行後に環境を見たい場合は、python -i script.py'を試してください。これは叙事詩です! –

2

それをロードするにはPython:

>>>from subprocess import Popen 
>>>Popen("python myscript.py", shell=True) 
+3

サブプロセスはこれには適していません。それは完全に別のプロセスであり、その出力を見るためにも別のコマンドが必要なので、その変数と対話することはできません。 –

5

subprocessモジュールを使用することもできます。使用execfile('script.py')

>>> import subprocess 
>>> proc = subprocess.Popen(['./script.py']) 
>>> proc.communicate() 
9

を試してみてください3.0を使用している場合にのみ、Pythonの2.xの上で動作:何かのように。それには%run script.pyを含むさまざまな "魔法"コマンドがあります(もちろん、スクリプトを実行し、あなたが調べるために定義した変数は残します)。

+1

これは私のためには動作しません。私はどんな変数にもアクセスすることはできません。スクリプトをmain()に置くことができますか? – LWZ

関連する問題