問題タブ [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.

0 投票する
4 に答える
43578 参照

python - 終了を待たずに別のスクリプトを Python で実行するにはどうすればよいですか?

ユーザーが特定のジョブを実行できるようにする小さなダッシュボードを作成しています。私はDjangoを使用しているので、リンクをクリックしてジョブを開始し、ジョブが実行されているというメッセージとともにページに戻ることができるようにしたいと考えています。ジョブの結果は、後で彼に電子メールで送信されます。

私は使用することになっていると信じていますsubprocess.Popenが、それについてはわかりません。したがって、疑似コードでは、ここで私がやりたいことは次のとおりです。

0 投票する
5 に答える
2877 参照

winapi - 別のプログラムが終了するのを待っている間に、win32 アプリの GUI を更新するにはどうすればよいですか?

現在、win32 GUI アプリ内から CreateProcess/WaitForSingleObject を使用して、ソフトウェア ライセンスの問題を処理する小さな GUI アプリを起動しています。これはすべて正常に機能しますが、ライセンス アプリが作業を完了するのを待つ間、基本的に「親」アプリがハングします。この間、親アプリの更新は行われず、ユーティリティ アプリのウィンドウを移動すると、醜い白い四角が表示されます。

また、何らかの奇妙な理由で、ユーティリティ アプリの実行中に、そのアプリ内から何かをクリップボードにコピーすると、ハングします。理由はまだわかりませんが、親アプリ内からアプリが終了するのを待っている場合にのみ発生します。

したがって、他のアプリが終了するのを待っている間に親アプリにイベントを処理させることができれば、両方の問題を解決できるのではないかと考えています。

では、UI の更新も処理する CreateProcess/WaitForSingleObject に代わるものはありますか?

0 投票する
6 に答える
4590 参照

python - Python 2.5 で Python 2.6 サブプロセス モジュールを使用する

Popen.terminate()関数を使用できるため、Python 2.6 のバージョンのサブプロセスを使用したいと考えていますが、Python 2.5 に行き詰まっています。私の 2.5 コードで新しいバージョンのモジュールを使用する合理的なクリーンな方法はありますか? ある種のfrom __future__ import subprocess_module

0 投票する
8 に答える
141926 参照

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」を使用しません。

ありがとう!

0 投票する
3 に答える
2476 参照

python - Python永続Popen

Popenの同じ「セッション」で複数の呼び出しを行う方法はありますか?たとえば、コマンドを1つの長い文字列に連結しなくても、それを介して呼び出しを行い、その後に別の呼び出しを行うことはできますか?

0 投票する
2 に答える
559 参照

python - python:call.subprocessを使用してファイルを書き込んだ後にファイルを使用する際の問題

Python では、テキスト ファイルを編集し、それらのテキスト ファイルを使用する実行可能ファイルを実行するスクリプトを作成しようとしています。基本的には、1) テキスト ファイルを開いて読み取り/書き込みを行い、2) 先ほど書き込んだファイルを bash コマンドで使用する必要があります。簡単な例を次に示します。

そのsubprocess.callコマンドの何らかの理由で、junk01.txt ファイルの内容が表示されません。ただし、このコードを実行cat junk01.txtして bash と入力すると、ファイルは正しく書き込まれています。同様に、テキスト ファイルを開いて書き込み、閉じてから実行可能ファイルで使用しようとしても、ファイルがまだ書き込まれていないことに気付きました。これがなぜなのか、それを修正するために何ができるのかについての説明はありますか?

0 投票する
10 に答える
177647 参照

python - Python から外部コマンドを非同期で実行するにはどうすればよいですか?

Python スクリプトから非同期でシェル コマンドを実行する必要があります。これは、外部コマンドが停止し、必要なことは何でも実行している間も、Python スクリプトを実行し続けたいということです。

私はこの投稿を読みました:

Python で外部コマンドを呼び出す

その後、私は出発していくつかのテストをos.system()行いましたが、コマンドの最後に使用することを条件&に、コマンドが戻るのを待つ必要がないように機能するようです。私が疑問に思っているのは、これがそのようなことを達成するための適切な方法であるかどうかということです? 試してみcommands.call()ましたが、外部コマンドでブロックされるため、うまくいきません。

os.system()これを使用するのが賢明かどうか、または他のルートを試す必要があるかどうかを教えてください。

0 投票する
4 に答える
8521 参照

python - Python、Popen のストリームを Python 関数にリダイレクト

私はPythonプログラミングが初めてです。私はこの問題を抱えています:テキストファイルのリスト(圧縮されているものとされていないもの)があり、次のことを行う必要があります:-サーバーに接続してそれらを開く-ファイルを開いた後、彼のコンテンツを取得して別のファイルに渡す必要があります私が書いたpython関数

これらのファイルに含まれる情報を詳しく説明するため。この関数は、3 行を使用して、これらのファイルに保存されているログを 1 行だけで書き込むことを目的としています...この関数は、ローカル マシンから読み取ったファイルに対して正常に動作していますが、リモート サーバーに接続する方法がわかりません。各ファイルの内容を文字列に保存せずにこれらの 1 行のログを作成し、文字列を操作します... リモート マシンに接続するために使用するコマンドは次のとおりです。

retList[0] と retList[2] は、user@remote と、アクセスする必要があるフォルダー名です。

よろしくお願いします!

アップデート:

私の問題は、最初にssh接続を確立する必要があることです:

開く必要があるすべてのファイルはリスト fileList[] に保存され、一部は圧縮 (.gz) され、一部は単なるテキスト ファイルです !! ボットが何も機能しない前にあなたが示したすべての手順を試しました... Popen 関数の 3 番目の引数を変更する必要があると思いますが、その方法がわかりません! 私を助けることができる人はいますか???

0 投票する
4 に答える
11919 参照

python - subprocess.Popen(...) が常に返されないのはなぜですか?

これが簡単なpythonの質問であることを願っています。

Pythonインタープリターで次のことを試すと:

が実行さls -lれますが、新しい >>> プロンプトを表示するには「return」キーを押す必要があります。

ただし、次のことを試すと:

次に、ls -lすぐに >>> プロンプトが表示されて実行されます。

もう 1 つのバリエーション:

これにより、すぐに新しいプロンプトが表示されます。

最後の例は、私が望むものに最も近いものです。私の目標は、子プロセスを起動し、それが終了するのを待ってから、参照することで親プロセスでその標準出力を使用し、標準エラー出力をp.stdout他の方法で出力することです。

現在、私の実際のアプリケーションでは、最後のバージョン は .p = subprocess.Popen(cmd, stdout=subprocess.PIPE)の有無にかかわらずp.wait().

ありがとう、

チャーリー