草庐IT

java - 在 Java 中捕获标准输出的内容

我正在调用一个在我的控制台/标准输出中打印一些字符串的函数。我需要捕获这个字符串。我不能修改正在执行打印的函数,也不能通过继承更改运行时行为。我找不到任何允许我执行此操作的预定义方法。JVM是否存储打印内容的缓冲区?有谁知道可以帮助我的Java方法吗? 最佳答案 您可以通过调用重定向标准输出System.setOut(myPrintStream);或者-如果您需要在运行时记录它,将输出通过管道传输到一个文件:javaMyApplication>log.txt另一个技巧-如果你想重定向但不能更改代码:实现一个快速包装器来调用你的应用程

java - 编译错误 : cannot find symbol: In, StdIn 和 StdOut

代码来自http://algs4.cs.princeton.edu/11model/BinarySearch.java.html用于算法教科书。importjava.util.Arrays;publicclassBinarySearch{//precondition:arraya[]issortedpublicstaticintrank(intkey,int[]a){intlo=0;inthi=a.length-1;while(loa[mid])lo=mid+1;elsereturnmid;}return-1;}publicstaticvoidmain(String[]args){in

python - 如何悄悄启动Python REPL?

有没有办法安静地启动python,也许是通过设置一些环境变量或提供命令行选项?而不是看到这个:wim@SDFA100461C:/tmp$pythonPython2.7.5+(default,Sep192013,13:48:49)[GCC4.8.1]onlinux2Type"help","copyright","credits"or"license"formoreinformation.>>>有时我想要这种行为,直接提示:wim@SDFA100461C:/tmp$python>>>我也对ipython的答案感兴趣。 最佳答案 这似乎可

Python 跟踪模块 - 执行时跟踪行,但保存到文件,而不是标准输出

我想在执行python脚本时跟踪它们的行。但是我使用的程序需要将内容打印到标准输出。python跟踪模块的跟踪选项将它们打印到标准输出。有没有告诉它不要将它们打印到标准输出,而是将它们保存到文件中?我尝试设置outfile参数,但它不会停止打印跟踪线。 最佳答案 您可以复制跟踪模块代码,并进行一些更改以将其输出写入您选择的文件。在第600行和第650行之间有五个print语句是您要更改的语句。因为你不需要让它太漂亮,你可以将它添加到文件的最后:my_out_file=open("/home/mytrace.txt","w")并更改打

python - 使用 Python 通过 stderr 和 stdout 处理来自子进程的消息

我的python代码生成子进程,并打印出stdout和stderr消息。我需要以不同的方式打印它们。我有以下代码来生成子进程并从中获取标准输出结果。cmd=["vsmake.exe","-f"]p=subprocess.Popen(cmd,stdout=subprocess.PIPE)forlineiniter(p.stdout.readline,''):printline,sys.stdout.flush()passp.wait()如何修改代码以检查子进程是否也通过stderr打印出消息?已添加我需要在子进程打印出一些东西后立即打印出stderr和stdout。而且是跨平台实现,所以

Python 子进程交互,为什么我的进程使用 Popen.communicate 而不是 Popen.stdout.read()?

我正在尝试使用subprocess模块与使用Python的命令行聊天机器人进行通信。(http://howie.sourceforge.net/使用编译后的win32二进制文件,我有我的理由!)这个有效:proc=Popen('Howie/howie.exe',stdout=PIPE,stderr=STDOUT,stdin=PIPE)output=proc.communicate()但是Popen.communicate等待进程终止(并向其发送EOF?),我希望能够与其进行交互。明显的解决方案是像这样读取stdout/写入stdin:这行不通:proc=Popen('Howie/how

python - 如何最好地在控制台中绘制?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭3年前。Improvethisquestion我正在尝试用python编写一个控制台(如在终端,而不是游戏控制台)乒乓球游戏,但我无法确定如何最好地(重新)绘制游戏。我正在考虑将二维数组作为一种位图,编辑数组以反射(reflect)球/桨的新位置,然后将每一行转换为字符串并打印出来。然而,这意味着旧的“框架”将保留下来,如果游戏的尺寸小于控制台窗口,旧的框架仍将可见。有没有办法从控制台删除字符?'\b'我听说是不可靠的。或者是否有更简单的替代途径来为

python - 打印到 Python : redirect vs print's file argument vs write 中的文件

我有一堆print调用需要写入文件而不是stdout。(我根本不需要stdout。)我正在考虑三种方法。其中任何一个有什么优势(包括性能)吗?完全重定向,我看到了here:importsyssaveout=sys.stdoutfsock=open('out.log','w')sys.stdout=fsockprint(x)#andmanymoreprintcalls#laterifIeverneedit:#sys.stdout=saveout#fsock.close()在每个打印语句中重定向:fsock=open('out.log','w')print(x,file=fsock)#an

python - 为什么我的 python 输出延迟到程序末尾?

我有一个非常简单的应用程序:importsysfromtimeimportsleepforiinrange(3):sys.stdout.write('.')sleep(1)print('Welcome!')我希望它每秒(3次)打印一个点,之后它应该显示“Welcome!”。不幸的是,它只是等待三秒钟,然后立即打印出所有内容。我在运行常规Python2.7的Mac上,我不知道为什么这段代码会这样。有什么建议吗? 最佳答案 这是因为sys.stdout被缓冲了。使用flush:importsysfromtimeimportsleepfo

python - 使用 numpy 将数组写入标准输出

将Numpy二维数组写入标准输出的惯用方法是什么?例如我有一个数组a=numpy.array([[2.,0.,0.],[0.,2.,0.],[0.,0.,4.]])[[2.0.0.][0.2.0.][0.0.4.]]我希望输出为:2.00.00.00.02.00.00.00.04.0我可以通过转换为嵌套列表,然后加入列表元素来做到这一点:print('\n'.join([''.join([str(e)foreinrow])forrowina.tolist()]))但是想要这样的东西:a.tofile(sys.stdout)(除非这给出了语法错误)。 最佳答案