タグ付けされた質問 「stdout」

標準出力ストリーム(stdout)は、プログラムがその出力データを書き込むストリームです。

2
stdoutとstderrの両方をbashでパイピングしていますか?
新しいバージョンのbashには、&>(私が正しく理解していれば)stdoutとstderrの両方をファイルにリダイレクトする演算子があるようです(&>>Adrianが明確にしたように、代わりにファイルに追加します)。 同じことを達成する最も簡単な方法は何ですか?代わりに別のコマンドにパイプしますか? たとえば、次の行では: cmd-doesnt-respect-difference-between-stdout-and-stderr | grep -i SomeError grepがstdoutとstderrの両方のコンテンツと一致するようにしたい(実際には、それらを1つのストリームに結合させる)。 注:この質問は、配管について尋ねているではないリダイレクトする-それはそれは、現在の重複としてマークされています質問の重複しないようにします。
156 bash  stdout  stderr  piping 

16
Pythonでコンソールログを無効にして再度有効にする方法は?
Pythonのログモジュールを使用していますが、しばらくの間コンソールログを無効にしたいのですが、機能しません。 #!/usr/bin/python import logging logger = logging.getLogger() # this gets the root logger # ... here I add my own handlers #logger.removeHandler(sys.stdout) #logger.removeHandler(sys.stderr) print logger.handlers # this will print [<logging.StreamHandler instance at ...>] # but I may have other handlers there that I want to keep logger.debug("bla bla") 上記のコードはbla blaon …

6
フォルダー内のすべてのファイルを開く方法は?
私はpythonスクリプトparse.pyを持っています。このスクリプトでは、file1などのファイルを開いてから、合計文字数を出力することができます。 filename = 'file1' f = open(filename, 'r') content = f.read() print filename, len(content) 現在、標準出力を使用して結果を出力ファイルに出力しています-出力 python parse.py >> output しかし、手動でこのファイルを作成したくないのですが、すべてのファイルを自動的に処理する方法はありますか?お気に入り ls | awk '{print}' | python parse.py >> output 次に、問題はどのように標準化からファイル名を読み取ることができますか?または、lsとその種の作業を簡単に行うための組み込み関数がすでにいくつかありますか? ありがとう!
148 python  file  pipe  stdout  stdin 

9
Pythonのstdoutをある種の文字列バッファにリダイレクトできますか?
ftplib小さなFTPクライアントを作成するためにPythonを使用していますが、パッケージ内の一部の関数は文字列出力を返さず、に出力しstdoutます。stdout出力を読み取ることができるオブジェクトにリダイレクトしたい。 私stdoutは次のようにして通常のファイルにリダイレクトできることを知っています: stdout = open("file", "a") しかし、私はローカルドライブを使用しない方法を好みます。 BufferedReaderバッファをストリームにラップするために使用できるJavaのようなものを探しています。

10
start-stop-daemonによって開始されたプロセスのstdoutをログに記録するにはどうすればよいですか?
私はinitスクリプトを使用して、以下で始まる簡単なプロセスを実行しています。 start-stop-daemon --start --quiet --chuid $DAEMONUSER \ --make-pidfile --pidfile $PIDFILE --background \ --exec $DAEMON $DAEMON_ARGS $ DAEMONと呼ばれるプロセスは通常、ログ情報を標準出力に出力します。私の知る限り、このデータはどこにも保存されていません。 $ DAEMONのstdoutをどこかのファイルに書き込むか、追加します。 私が知っている唯一の解決策は、$ DAEMONの代わりにシェルスクリプトを直接呼び出すようにstart-stop-daemonに指示することです。次に、スクリプトは$ DAEMONを呼び出し、ログファイルに書き込みます。しかし、これには、デーモン自体を変更するような、このような一般的なタスクを解決するための間違った方法と思われる追加のスクリプトが必要です。

5
T型への配管時にstdoutのラインバッファリングを強制する
通常、stdoutラインバッファリングされます。つまり、printf引数が改行で終わっている限り、その行が即座に印刷されると期待できます。これは、パイプを使用してにリダイレクトする場合は保持されないようteeです。 a文字列を常に-で\n終了してに出力するC ++プログラムがありますstdout。 単独で実行すると(./a)、期待どおりにすべてが正しく、適切なタイミングで印刷されます。ただし、それをtee(./a | tee output.txt)にパイプすると、終了するまで何も出力されず、を使用する目的に反しteeます。 fflush(stdout)C ++プログラムで各印刷操作の後にを追加することで修正できることを知っています。しかし、よりクリーンで簡単な方法はありますか?たとえば、stdoutパイプを使用している場合でも、強制的にラインバッファリングされるコマンドを実行できますか?
116 unix  buffer  pipe  stdout  tee 

3
Python関数呼び出しからstdout出力をキャプチャする方法?
オブジェクトに対して何かを行うPythonライブラリを使用しています do_something(my_object) そしてそれを変更します。その間、いくつかの統計をstdoutに出力します。この情報を把握したいと思います。適切な解決策はdo_something()、関連情報を返すように変更することです。 out = do_something(my_object) しかしdo_something()、この問題に取り組む開発者たちが現れるまでにはしばらくかかります。回避策として、私do_something()はstdoutへの書き込みを解析することを考えました。 コードの2点間のstdout出力をキャプチャするにはどうすればよいですか。 start_capturing() do_something(my_object) out = end_capturing() ?
112 python  stdout  capture 

3
Goの子プロセスのstdoutパイプをリダイレクトする
プログラムのようなサーバーを実行するプログラムをGoで作成しています(これもGoです)。ここで、親プログラムを開始したターミナルウィンドウに子プログラムのstdoutを配置します。これを行う1つの方法はcmd.Output()関数を使用することですが、これはプロセスが終了した後にのみstdoutを出力します。(このサーバーのようなプログラムは長時間実行され、ログ出力を読みたいので、これは問題です) 変数outはでtype io.ReadCloserあり、自分のタスクを達成するためにそれをどうすればよいかわかりません。また、このトピックに関するWebで役立つものを見つけることができません。 func main() { cmd := exec.Command("/path/to/my/child/program") out, err := cmd.StdoutPipe() if err != nil { fmt.Println(err) } err = cmd.Start() if err != nil { fmt.Println(err) } //fmt.Println(out) cmd.Wait() } コードの説明:Println関数のコメントを外してコードをコンパイルしPrintln(out io.ReadCloser)ます。これは意味のある関数ではないことを知っています。 (出力を生成します&{3 |0 <nil> 0})これらの2行は、コードをコンパイルするためだけに必要です。

10
スクリプトからstdoutをキャプチャしますか?
次のようなことを行うスクリプトがあるとします。 # module writer.py import sys def write(): sys.stdout.write("foobar") ここで、write関数の出力をキャプチャして、さらに処理するために変数に格納するとします。素朴な解決策は次のとおりです。 # module mymodule.py from writer import write out = write() print out.upper() しかし、これは機能しません。私は別の解決策を考え出し、それは機能しますが、問題を解決するためのより良い方法があるかどうか教えてください。ありがとう import sys from cStringIO import StringIO # setup the environment backup = sys.stdout # #### sys.stdout = StringIO() # capture output write() out = sys.stdout.getvalue() # release …
89 python  stdout  sys 

17
新しい行ではなく同じ行に印刷しますか?
基本的に私はこの男がしたことの反対をしたいです...へへ。 Pythonスクリプト:既存の行を更新するのではなく、シェルに毎回新しい行を出力します 私はそれがどれだけ進んでいるかを教えてくれるプログラムを持っています。 for i in some_list: #do a bunch of stuff. print i/len(some_list)*100," percent complete" したがって、len(some_list)が50の場合、最後の行が50回印刷されます。1行印刷して、その行を更新し続けたい。私はこれがおそらくあなたが一日中読むであろう最も怠惰な質問であることを知っています。私は答えを得るためにグーグルに入れる必要がある4つの単語を理解することができません。 更新!私は正しいと思われるmvdsの提案を試しました。新しいコード print percent_complete," \r", 完了率は単なる文字列です(初めて抽象化したので、文字通りにしようとしています)。その結果、プログラムが実行され、プログラムが終了するまで何も出力されず、1行だけに「100%完了」と出力されます。 キャリッジリターンがない場合(ただし、コンマを使用すると、mvdsの提案の半分)、最後まで何も出力されません。そして、印刷します: 0 percent complete 2 percent complete 3 percent complete 4 percent complete 等々。したがって、新しい問題は、カンマを使用すると、プログラムが終了するまで印刷されないということです。 キャリッジリターンがあり、カンマがない場合は、どちらの場合とまったく同じように動作します。
89 python  stdout 

3
Rubyの$ stdoutとSTDOUTの違い
Rubyでは、$stdout(前にドル記号が付いている)とSTDOUT(すべて大文字の)の違いは何ですか?出力のリダイレクトを行う場合、どちらを使用する必要がありますか。それはなぜですか。同じことがのために行く$stderrとSTDERR。 編集:関連する質問が見つかりました。

13
サブプロセスからリアルタイムでstdoutをキャッチする
subprocess.Popen()Windowsでrsync.exeを実行し、Pythonでstdoutを出力したいと思います。 私のコードは機能しますが、ファイル転送が完了するまで進行状況をキャッチしません!各ファイルの進捗状況をリアルタイムで印刷したい。 Python 3.1を使用すると、IOの処理に優れていると聞いたので。 import subprocess, time, os, sys cmd = "rsync.exe -vaz -P source/ dest/" p, line = True, 'start' p = subprocess.Popen(cmd, shell=True, bufsize=64, stdin=subprocess.PIPE, stderr=subprocess.PIPE, stdout=subprocess.PIPE) for line in p.stdout: print(">>> " + str(line.rstrip())) p.stdout.flush()

6
Rubyの外部プロセスのSTDOUTから継続的に読み取る
コマンドラインからrubyスクリプトを介してblenderを実行したいのですが、その後、blenderからの出力を行ごとに処理して、GUIのプログレスバーを更新します。ブレンダーが外部プロセスであり、その標準ストリームを読み取る必要があることはそれほど重要ではありません。 ブレンダープロセスがまだ実行されているときに、ブレンダーが通常シェルに出力する進行状況メッセージをキャッチできないようです。いくつかの方法を試しました。ブレンダーがまだ実行されている間ではなく、ブレンダーが終了した後、私は常にブレンダーの標準出力にアクセスしているようです。 失敗した試行の例を次に示します。ブレンダーの出力の最初の25行を取得して出力しますが、ブレンダープロセスが終了した後でのみです。 blender = nil t = Thread.new do blender = open "| blender -b mball.blend -o //renders/ -F JPEG -x 1 -f 1" end puts "Blender is doing its job now..." 25.times { puts blender.gets} 編集: 少し明確にするために、blenderを呼び出すコマンドは、進行状況を示す出力のストリームをシェルに返します(パート1-16が完了したなど)。ブレンダーが終了するまで、出力を「取得」するための呼び出しはブロックされているようです。問題は、blenderが出力をシェルに出力するときに、blenderの実行中にこの出力にアクセスする方法です。
86 ruby  shell  process  stdout  stdin 

9
'\ 0'とCのprintf()
Cの入門コースで、文字列を格納するときに、文字列\0の最後にnull文字が格納されることを学びました。しかし、文字列を印刷したい場合printf("hello")は\0、次のステートメントで終わっていないことがわかりましたが、 printf("%d", printf("hello")); Output: 5 しかし、これは一貫性がないようです。文字列のような変数がメインメモリに格納されることを知っている限り、何かを印刷しているときにメインメモリにも格納される可能性があると思いますが、なぜ違いがあるのでしょうか。
21 c  printf  stdout  c-strings 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.