Questions tagged «stdout»

标准输出流(stdout)是程序写入其输出数据的流。

2
在bash中同时输出stdout和stderr?
似乎较新版本的bash具有&>运算符,(如果我理解正确的话)该运算符会将stdout和stderr都重定向到文件(&>>如Adrian所阐明的那样,追加到文件中)。 实现同一目标的最简单方法是什么,而是通过管道传递到另一个命令? 例如,在这一行: cmd-doesnt-respect-difference-between-stdout-and-stderr | grep -i SomeError 我希望grep可以匹配stdout和stderr中的内容(有效地,将它们组合成一个流)。 注意:这个问题是在询问管道,而不是重定向-因此,它不是当前标记为重复的问题的重复。
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) 现在,我正在使用stdout将结果定向到我的输出文件-输出 python parse.py >> output 但是,我不想按文件手动处理此文件,有没有办法自动处理每个文件?喜欢 ls | awk '{print}' | python parse.py >> output 然后问题是如何从standardin中读取文件名?还是已经有一些内置函数可以轻松执行ls和此类工作? 谢谢!
148 python  file  pipe  stdout  stdin 

9
我可以将python中的stdout重定向到某种字符串缓冲区吗?
我使用python ftplib编写了一个小型FTP客户端,但程序包中的某些函数不会返回字符串输出,而是输出到stdout。我想重定向stdout到一个我将能够从中读取输出的对象。 我知道stdout可以使用以下命令将其重定向到任何常规文件中: stdout = open("file", "a") 但是我更喜欢不使用本地驱动器的方法。 我正在寻找类似BufferedReaderJava的东西,可用于将缓冲区包装到流中。

10
如何记录由start-stop-daemon启动的进程的标准输出?
我正在使用一个初始化脚本来运行一个简单的过程,该过程始于: start-stop-daemon --start --quiet --chuid $DAEMONUSER \ --make-pidfile --pidfile $PIDFILE --background \ --exec $DAEMON $DAEMON_ARGS 名为$ DAEMON的过程通常会将日志信息打印到其标准输出中。据我所知,该数据没有存储在任何地方。 我想将$ DAEMON的标准输出写入或附加到某个文件中。 我知道的唯一解决方案是告诉start-stop-daemon调用shell脚本,而不是直接调用$ DAEMON。然后,脚本将调用$ DAEMON并将其写入日志文件。但这需要一个额外的脚本,就像修改守护程序本身一样,这似乎是解决此类常见任务的错误方法。

5
配管到T型管时强制stdout进行线缓冲
通常,stdout是行缓冲的。换句话说,只要您的printf参数以换行符结尾,就可以期望该行会立即打印出来。使用管道重定向到时,似乎没有这种情况tee。 我有一个C ++程序,a它将始终\n终止的字符串输出到stdout。 当它自己运行(./a)时,所有内容均会按预期正确正确地打印。但是,如果将其通过管道传递到tee(./a | tee output.txt),则在退出之前它不会打印任何内容,这违背了使用的目的tee。 我知道我可以通过fflush(stdout)在C ++程序中的每次打印操作后添加一个来解决此问题。但是,有没有更清洁,更轻松的方法?例如,是否有我可以运行的命令stdout,即使使用管道,该命令也将被强制进行行缓冲?
117 unix  buffer  pipe  stdout  tee 

3
如何从Python函数调用中捕获标准输出?
我正在使用对对象执行某些操作的Python库 do_something(my_object) 并更改它。这样做时,它会向stdout打印一些统计信息,我希望掌握这些信息。正确的解决方案是更改do_something()以返回相关信息, out = do_something(my_object) 但是开发人员需要一段时间才能do_something()解决此问题。作为一种解决方法,我考虑过解析do_something()对stdout的任何写入。 如何捕获代码两点之间的stdout输出,例如 start_capturing() do_something(my_object) out = end_capturing() ?
112 python  stdout  capture 

3
在Go中重定向子进程的stdout管道
我正在用Go编写程序,该程序执行类似程序的服务器(也就是Go)。现在,我想在启动父程序的终端窗口中获​​得子程序的标准输出。一种方法是使用cmd.Output()函数,但这仅在进程退出后才输出标准输出。(这是一个问题,因为这个类似于服务器的程序运行了很长时间,并且我想读取日志输出) 变量out是,type io.ReadCloser我不知道该如何使用它来完成任务,因此在该主题上我找不到任何有用的信息。 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})只需两行即可编译代码。

10
从脚本捕获标准输出?
假设有一个脚本执行以下操作: # 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 


13
从子进程实时捕获标准输出
我想subprocess.Popen()在Windows中使用rsync.exe,并在Python中打印标准输出。 我的代码可以运行,但是直到文件传输完成后才能捕获进度!我想实时打印每个文件的进度。 既然我听说使用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中的进度条。搅拌器是我需要阅读其标准输出的外部过程并不是很重要。 当Blender进程仍在运行时,我似乎无法捕获Blender通常打印到Shell的进度消息,并且我尝试了几种方法。我似乎总是在搅拌器退出后(而不是在它仍在运行时)访问搅拌器的标准输出。 这是失败尝试的示例。它确实获取并打印了Blender输出的前25行,但仅在Blender进程退出后: 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} 编辑: 为了更清楚一点,调用搅拌器的命令在shell中返回输出流,指示进度(第1-16部分已完成,等等)。似乎所有对“获取”输出的调用都被阻止,直到搅拌机退出为止。问题是当Blender仍在运行时如何访问此输出,因为Blender会将其输出打印到Shell。
86 ruby  shell  process  stdout  stdin 

16
打印到同一行而不是python中的新行
基本上,我想做的和这个家伙相反。 Python脚本:每次将新行打印到外壳程序,而不是更新现有行 我有一个程序,告诉我它有多远。 for i in some_list: #do a bunch of stuff. print i/len(some_list)*100," percent complete" 因此,如果len(some_list)为50,我将最后一行打印50遍。我想打印一行并继续更新该行。我知道我知道这可能是您整天都会阅读的最棘手的问题。我只是想不通我需要输入到Google以获得答案的四个词。 更新!我尝试了mvds的建议,认为正确。新密码 print percent_complete," \r", 完成百分比只是一个字符串(我是第一次尝试抽象,现在是抽象的)。现在的结果是它运行该程序,直到程序结束后才打印任何内容,然后仅在一行上打印“ 100%完成”。 没有回车符(但逗号,是mvds建议的一半),直到最后都不会打印。然后打印: 0 percent complete 2 percent complete 3 percent complete 4 percent complete 等等。因此,现在的新问题是,直到程序完成,逗号才会打印出来。 使用回车符且没有逗号时,其行为与未使用逗号完全相同。
85 python  stdout 


4
如何使任何shell命令的输出无缓冲?
有没有一种方法可以运行shell命令而无需输出缓冲? 例如,hexdump file | ./my_script将仅以缓冲块的形式将输入从hexdump传递到my_script,而不是逐行传递。 其实我想知道一个通​​用的解决方案,如何使任何命令都没有缓冲?
72 stdout  buffering 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.