問題タブ [subprocess]
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 - 終了を待たずに別のスクリプトを Python で実行するにはどうすればよいですか?
ユーザーが特定のジョブを実行できるようにする小さなダッシュボードを作成しています。私はDjangoを使用しているので、リンクをクリックしてジョブを開始し、ジョブが実行されているというメッセージとともにページに戻ることができるようにしたいと考えています。ジョブの結果は、後で彼に電子メールで送信されます。
私は使用することになっていると信じていますsubprocess.Popen
が、それについてはわかりません。したがって、疑似コードでは、ここで私がやりたいことは次のとおりです。
winapi - 別のプログラムが終了するのを待っている間に、win32 アプリの GUI を更新するにはどうすればよいですか?
現在、win32 GUI アプリ内から CreateProcess/WaitForSingleObject を使用して、ソフトウェア ライセンスの問題を処理する小さな GUI アプリを起動しています。これはすべて正常に機能しますが、ライセンス アプリが作業を完了するのを待つ間、基本的に「親」アプリがハングします。この間、親アプリの更新は行われず、ユーティリティ アプリのウィンドウを移動すると、醜い白い四角が表示されます。
また、何らかの奇妙な理由で、ユーティリティ アプリの実行中に、そのアプリ内から何かをクリップボードにコピーすると、ハングします。理由はまだわかりませんが、親アプリ内からアプリが終了するのを待っている場合にのみ発生します。
したがって、他のアプリが終了するのを待っている間に親アプリにイベントを処理させることができれば、両方の問題を解決できるのではないかと考えています。
では、UI の更新も処理する CreateProcess/WaitForSingleObject に代わるものはありますか?
python - Python 2.5 で Python 2.6 サブプロセス モジュールを使用する
Popen.terminate()関数を使用できるため、Python 2.6 のバージョンのサブプロセスを使用したいと考えていますが、Python 2.5 に行き詰まっています。私の 2.5 コードで新しいバージョンのモジュールを使用する合理的なクリーンな方法はありますか? ある種のfrom __future__ import subprocess_module
?
python - Pythonスクリプトからスーパーユーザーとしてコマンドを実行する
そのため、サブプロセスを使用してPythonスクリプト内からプロセスをスーパーユーザーとして実行しようとしています。ipythonシェルでは、次のようなものです
正常に動作しますが、スクリプトに貼り付けるとすぐに取得し始めます: sudo: apach2ctl: command not found
.
これは、sudo が ubuntu で環境を処理する方法によるものだと思います。(私も試しsudo -E apche2ctl restart
てみましたsudo env path=$PATH apache2ctl restart
が、役に立ちませんでした)
apache2ctl restart
したがって、私の質問は基本的に、必要に応じてユーザーにスーパーユーザーパスワードの入力を求めるスーパーユーザーとして実行したい場合、どうすればよいですか? スクリプトにパスワードを保存するつもりはありません。
編集:
コマンドを文字列とトークン化されたリストの両方として渡そうとしました。Pythonインタープリターでは、パスワードプロンプトを適切に取得する文字列を使用して(元の問題のようにPythonスクリプトではまだ機能しません)、リストにはsudoのヘルプ画面が表示されます。
編集2:
したがって、私が収集したのは、Popen は shell=True の場合、文字列と同じようにいくつかのコマンドで動作しますが、
sudo を機能させるには、「shell=True」を使用しません。
ありがとう!
python - Python永続Popen
Popenの同じ「セッション」で複数の呼び出しを行う方法はありますか?たとえば、コマンドを1つの長い文字列に連結しなくても、それを介して呼び出しを行い、その後に別の呼び出しを行うことはできますか?
python - python:call.subprocessを使用してファイルを書き込んだ後にファイルを使用する際の問題
Python では、テキスト ファイルを編集し、それらのテキスト ファイルを使用する実行可能ファイルを実行するスクリプトを作成しようとしています。基本的には、1) テキスト ファイルを開いて読み取り/書き込みを行い、2) 先ほど書き込んだファイルを bash コマンドで使用する必要があります。簡単な例を次に示します。
そのsubprocess.call
コマンドの何らかの理由で、junk01.txt ファイルの内容が表示されません。ただし、このコードを実行cat junk01.txt
して bash と入力すると、ファイルは正しく書き込まれています。同様に、テキスト ファイルを開いて書き込み、閉じてから実行可能ファイルで使用しようとしても、ファイルがまだ書き込まれていないことに気付きました。これがなぜなのか、それを修正するために何ができるのかについての説明はありますか?
python - Python から外部コマンドを非同期で実行するにはどうすればよいですか?
Python スクリプトから非同期でシェル コマンドを実行する必要があります。これは、外部コマンドが停止し、必要なことは何でも実行している間も、Python スクリプトを実行し続けたいということです。
私はこの投稿を読みました:
その後、私は出発していくつかのテストをos.system()
行いましたが、コマンドの最後に使用することを条件&
に、コマンドが戻るのを待つ必要がないように機能するようです。私が疑問に思っているのは、これがそのようなことを達成するための適切な方法であるかどうかということです? 試してみcommands.call()
ましたが、外部コマンドでブロックされるため、うまくいきません。
os.system()
これを使用するのが賢明かどうか、または他のルートを試す必要があるかどうかを教えてください。
python - Python、Popen のストリームを Python 関数にリダイレクト
私はPythonプログラミングが初めてです。私はこの問題を抱えています:テキストファイルのリスト(圧縮されているものとされていないもの)があり、次のことを行う必要があります:-サーバーに接続してそれらを開く-ファイルを開いた後、彼のコンテンツを取得して別のファイルに渡す必要があります私が書いたpython関数
これらのファイルに含まれる情報を詳しく説明するため。この関数は、3 行を使用して、これらのファイルに保存されているログを 1 行だけで書き込むことを目的としています...この関数は、ローカル マシンから読み取ったファイルに対して正常に動作していますが、リモート サーバーに接続する方法がわかりません。各ファイルの内容を文字列に保存せずにこれらの 1 行のログを作成し、文字列を操作します... リモート マシンに接続するために使用するコマンドは次のとおりです。
retList[0] と retList[2] は、user@remote と、アクセスする必要があるフォルダー名です。
よろしくお願いします!
アップデート:
私の問題は、最初にssh接続を確立する必要があることです:
開く必要があるすべてのファイルはリスト fileList[] に保存され、一部は圧縮 (.gz) され、一部は単なるテキスト ファイルです !! ボットが何も機能しない前にあなたが示したすべての手順を試しました... Popen 関数の 3 番目の引数を変更する必要があると思いますが、その方法がわかりません! 私を助けることができる人はいますか???
python - subprocess.Popen(...) が常に返されないのはなぜですか?
これが簡単なpythonの質問であることを願っています。
Pythonインタープリターで次のことを試すと:
が実行さls -l
れますが、新しい >>> プロンプトを表示するには「return」キーを押す必要があります。
ただし、次のことを試すと:
次に、ls -l
すぐに >>> プロンプトが表示されて実行されます。
もう 1 つのバリエーション:
これにより、すぐに新しいプロンプトが表示されます。
最後の例は、私が望むものに最も近いものです。私の目標は、子プロセスを起動し、それが終了するのを待ってから、参照することで親プロセスでその標準出力を使用し、標準エラー出力をp.stdout
他の方法で出力することです。
現在、私の実際のアプリケーションでは、最後のバージョン
は .p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
の有無にかかわらずp.wait()
.
ありがとう、
チャーリー