4

私は教育を受けずにシステム管理の見習いをしているので、他の多くの人にとって初歩的な情報を見逃していることがあります。

印刷する前に stdout 行に別の引数を与えようとしていますが、どのプロセスを使用する必要があるのか​​ わかりません。

私の現在のコードは次のとおりです。

f = open('filelist', 'r')
searchterm = f.readline()
f.close()|
#takes line from a separate file and gives it definition so that it may be callable.

import commands
commands.getoutput('print man searchterm')

これは実行されていますが、シェルへの出力が得られません。私のより重要な質問は、適切なコマンドを使用して優先プロセスを取得していますか? 代わりにサブプロセス コマンドのいずれかを使用する必要がありますか? popen で遊んでみましたが、正しく使用できるほど十分に理解できていません。

つまり、走っていた

subprocess.Popen('print man searchterm') 

しかし、それはあなたがそれを実行する方法ではないことは間違いありません。Popen には、ファイルの場所や実行場所 (標準出力または標準エラー出力) など、私が指定したよりも多くの引数が必要です。しかし、これらのコマンドを機能させるのに問題がありました。それは次のようなものでしょうか:

subprocess.Popen(pipe=stdout 'man' 'searchterm')
#am unsure how to give the program my arguments here.  

私はあらゆる場所で調査を行ってきましたが、これは非常に広く使用されているプロセスであり、情報の不足ではなく過剰に苦しんでいるようです。どんな助けでも大歓迎です、私はまったく新しいです。

助けてくれてありがとう。

4

3 に答える 3

3

別のプロセスからデータを取得する標準的な方法は、サブプロセスを使用することです(コマンドは非推奨です) 。

import subprocess
p = subprocess.Popen(['print','man','searchitem'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdoutdata, stderrdata = p.communicate()

文字列を引数のリストに分割するための便利な関数がいくつかあることに注意してください。最も注目に値するのは、シェルと同じ方法で文字列を受け取り、それをリストに分割するshlex.splitです。(文字列で何も引用されていない場合は、str.split()同様に機能します)。

于 2012-07-27T19:48:30.403 に答える
0

ドキュメントから:

バージョン 2.6 以降非推奨: コマンド モジュールは Python 3 で削除されました。代わりに subprocess モジュールを使用してください。

別のプロセスで実行man searchtermし、ターミナルに結果を表示するには、次のようにします。

import subprocess
proc = subprocess.Popen('man searchterm'.split())
proc.communicate()
于 2012-07-27T19:48:33.550 に答える
0

commandsは Python 2.6 以降では非推奨であり、Python 3 では削除されています。Python 2.5 以前で立ち往生している場合でも、新しいコードでそれが望ましい状況はおそらくないでしょう。

于 2012-07-27T19:47:23.387 に答える