問題タブ [execfile]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - execfileで呼び出されたスクリプトの実行を停止します
if / elseステートメントを使用せずにexecfile関数で呼び出されたPythonスクリプトの実行を中断することは可能ですか?試しましexit()
たが、終わらせませんmain.py
。
python - Python:他のファイルの作業ディレクトリからのexecfile?
デフォルトの構成ファイルをロードし、ユーザーが追加の補足構成またはデフォルトのオーバーライドとして独自のPythonファイルを提供できるようにするコードがいくつかあります。
ただし、問題があります。によって指定されたファイルで、それ自体の作業ディレクトリではなく、の作業ディレクトリにあるかexecfile()
のようにディレクティブを実行します。したがって、ファイルが、たとえば、と同じディレクトリ内のモジュールがどこにあるかを確認すると、ディレクティブが失敗する可能性があります。cfg_path
foo.py
import
cfg_path
from m import x
m
cfg_path
execfile()
その引数の作業ディレクトリからどのようにすればよいですか、またはそうでなければ同等の結果を達成しますか?また、execfile
Python 3では非推奨であり、使用する必要があると言われているexec
ので、これを行うためのより良い方法があれば、私はすべての耳です。
注:作業ディレクトリを変更するだけの解決策は正しいとは思いません。私が知る限り、それはそれらのモジュールをインタプリタのモジュールルックアップパスに配置しません。
python - execfile() で実行される Python スクリプトで、インポートが NameError を防止しないのはなぜですか?
Python で exec ステートメントまたは execfile() を使用してスクリプトを実行した場合の NameError 例外に関する既存の質問をいくつか調べましたが、次の動作の適切な説明はまだ見つかりませんでした。
実行時に execfile() を使用してスクリプト オブジェクトを作成する単純なゲームを作成したいと考えています。以下は、この問題を示す 4 つのモジュールです (ご容赦ください。これは私ができる限り簡単です!)。メイン プログラムは、execfile() を使用してスクリプトをロードし、スクリプト マネージャを呼び出してスクリプト オブジェクトを実行します。
スクリプト ファイルは、サウンドを再生するオブジェクトを作成し、そのオブジェクトをスクリプト マネージャーのリストに追加するだけです。
スクリプト マネージャーは、各スクリプトの action() 関数を呼び出すだけです。
gamelib 関数は 4 番目のモジュールで定義されています。これは、アクセスするのが面倒なモジュールです。
上記のコードは、次の出力で機能します。
ただし、game.py の「import gamelib」ステートメントをコメントアウトし、script.py の「import gamelib」のコメントを外すと、次のエラーが発生します。
私の質問は次のとおりです。1)スクリプトを実行する「game.py」モジュールでインポートが必要なのはなぜですか? 2) 「gamelib」が参照されているモジュール (script.py) または呼び出されているモジュール (script_mgr.py) から「gamelib」をインポートできないのはなぜですか?
これは Python 2.5.1 で発生します
python - Python でコマンド ラインに戻る
ある条件下で早期に終了したいスクリプトがあります。
Python インタラクティブ プロンプトを使用してこのスクリプトを実行しexecfile("foo.py")
、スクリプトを終了してインタラクティブ インタープリターに戻りたいと考えています。どうすればいいですか?を使用するsys.exit()
と、Python インタープリターは完全に終了します。
python - ユニットテストを実行しているPythonサブプロセスをすぐに停止するにはどうすればよいですか?終了し、機能していないキル
GUIのメイントレッドとワーカースレッドの2つのスレッドを実行しているTkinterGUIがあります。ワーカースレッドは、次のコードを使用してサブプロセスを作成します。
ファイルrunTests.pyはいくつかのセットアップを実行してから、次のコマンドを使用して単体テストファイルを実行します。
myUnitTests.pyファイルには、実行に5分以上かかる単体テストがいくつかあります。GUIからボタンをクリックして、テストの実行を停止します。これにより、ワーカースレッドはサブプロセスを停止するためのシグナルを送信します。
終了コマンドは、プロセスをすぐに停止するのではなく、現在の単体テストの実行が終了するまで待機してから、プロセスを終了しますか?使用しようとしましos.kill
たが、と同じ結果が得られterminate()
ます。
サブプロセスをすぐに強制終了するように、プログラムの応答性を高めるにはどうすればよいですか?
python - Pythonシェルとexecfileスコープ
私はipythonシェルの内部から作業しており、多くの場合、構築中の関数を含むスクリプトファイルをリロードする必要があります。
私のmain.pyの中には:
def myreload():execfile( "main.py")execfile( "otherfile.py")
同じipythonセッションでexecfileコマンドを直接実行している場合は、myreload()の呼び出しは正常に機能します。
ただし、何らかの理由で、セッションが新しく、execfile( "main.py")を呼び出しただけの場合、myreload()は実際にはotherfile.py内の関数を使用可能にしません。ただし、エラーはスローされません。
何か案は?
python - 他のスクリプトから呼び出されたときに機能する python atexit モジュールの代替
atexit.register(function)
Python スクリプトの終了時に呼び出される関数を登録するためにを使用することは、一般的な方法です。
問題は、これが醜い方法で失敗するケースを特定したことです。スクリプトが別の python スクリプトから実行された場合、execfile()
.
この場合、Python は終了時に関数を見つけることができないことがわかります。これは理にかなっています。
私の質問は、この問題が発生しない方法でこの機能を維持する方法です。
python - Python 2.4: 通常のスクリプトでのインポート速度と execfile されたスクリプトでのインポート速度
私には意味のないものに出くわしました。私が働いている場所には、多数の Python CGI Web ページ (Django や Turbogears などを実行していない単純な Apache サーバーのセットアップのみ) があり、スクリプトの実行に時間がかかることに少し不満を感じています。多くの time.time() 呼び出しをやめて、ボトルネックを sqlalchemy のインポートとして特定したと思いました (ただし、おそらく「任意の大きなモジュール」であると考えているため、sqlalchemy タグが間違っている可能性があります)。
したがって、さまざまなことを試した後、この例に行き着きました(ファイルが「test.py」と呼ばれていると仮定します)
コマンド プロンプトで (実行可能に設定して) test.py を実行すると、通常、そのインポート ステートメントに対して約 0.7 秒 (+/- 0.1 秒) が表示されます。
でも、電話したら
約10倍の速度アップが得られます
そこで、python CGI スクリプトのいくつかを、以下を呼び出す小さな tcsh スクリプトでラップしようと考えました。
通常は約 2 ~ 3 倍高速化され、重要なことに、返されるデータは依然として正確です。
import-heavy スクリプトではなく cpu-heavy スクリプトを使用すると、次のようになります。
execfile を使用すると、わずかな速度低下が発生します。これは、わずかな execfile オーバーヘッドから予想されることです。
ここで何が起こっているか知っている人はいますか?誰かが同様の速度の違いを再現できますか、それとも execfile が何らかの形で修正する方法でセットアップが壊れていますか? インポートは execfile 内でわずかに異なる動作をすると思いました (または、少なくとも、execfile ステートメントを終了すると、必ずしも表示されるとは限りません) が、速度の大きな違いに驚いています。
オラクルが提供する「Enterprise Linux Serverリリース5(Carthage)」でpython 2.4 64ビットを実行しています。
python - [Python]エンコーディングと実行ファイル
私はpython 2.4を使ってそのようなことをしようとしています:
そして、私はこのエラーを受け取ります:
私の質問は、実行したいファイルの名前が韓国語の文字である場合、どのように実行ファイルを作成できますか?
どうもありがとうございました