Tag: 标准输出

从subprocess实时捕获标准输出

我想在Windows中使用subprocess.Popen subprocess.Popen() 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()

subprocessreadline挂起等待EOF

我有一个简单的c ++程序,我试图通过python脚本来执行。 (我对编写脚本非常陌生),并且无法通过pipe道读取输出。 从我所看到的看来,如果没有EOF,readline()似乎不起作用,但是我希望能够在程序中间读取并且让脚本响应输出的内容。 而不是阅读输出,它只是挂起python脚本: #!/usr/bin/env python import subprocess def callRandomNumber(): print "Running the random guesser" rng=subprocess.Popen("./randomNumber", stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True) i=50 rng.stdin.write("%d\n" % i) output=rng.stdout.readline() output=rng.stdout.readline() callRandomNumber() 和c ++文件,它产生一个100之间的随机数,然后检查用户的猜测,直到他们猜测正确 #include<iostream> #include<cstdlib> using namespace std; int main(){ cout<<"This program generates a random number from 1 to 100 and asks the user to enter guesses until they […]

将控制台输出redirect到java中的string

我有一个返回types为VOID的函数,并直接在控制台上打印。 不过,我需要在string中的输出,以便我可以工作。 因为我不能做任何改变与返回types是VOID函数,所以我不得不redirect输出到string。 我怎样才能在JAVA中redirect它? 有很多关于将stdoutredirect到string的问题,但它们只redirect从用户获取的input,而不是某些函数的输出。

显示子过程输出到标准输出并redirect

我正在通过Python的subprocess模块运行一个脚本。 目前我使用: p = subprocess.Popen('/path/to/script', stdout=subprocess.PIPE, stderr=subprocess.PIPE) result = p.communicate() 然后我将结果打印到标准输出。 这一切都很好,但由于脚本需要很长时间才能完成,所以我希望从脚本实时输出到stdout。 我输出输出的原因是因为我想parsing它。

stdout行默认情况下缓冲,无缓冲或不确定?

c99 7.9.13/7节规定: 在程序启动时,三个文本stream是预定义的,不需要明确打开 – 标准input(用于读取常规input),标准输出(用于写入常规输出)和标准错误(用于写入诊断输出)。 最初打开时,标准错误stream没有被完全缓冲; 标准input和标准输出stream是完全缓冲的,当且仅当stream可以被确定为不涉及交互设备时。 所以这是有道理的。 如果您将标准输出推送到文件中,则需要将其完全缓冲以提高效率。 但是当我们无法确定设备是否是非交互式(即正常输出到terminal)时,在标准中没有提到输出是线路缓冲还是无缓冲。 我问的原因是我的答案在这里 ,我应该插入一个fflush(stdout); 两个陈述之间: printf ("Enter number> "); // fflush (stdout); needed ? if (fgets (buff, sizeof(buff), stdin) == NULL) { … } 因为我没有用换行符终止printf 。 任何人都可以清除这个?

从系统捕获标准输出()命令优化

我试图通过system()来启动外部应用程序 – 例如system("ls") 。 我想捕获它的输出,所以我可以把它发送到另一个函数进行进一步处理。 C / C ++中最好的方法是什么?

暂时redirectstdout / stderr

是否有可能临时redirectstdout / stderr在Python(即在一个方法的持续时间)? 编辑: 目前的解决scheme(我最初记住但忘记了)的问题是,他们不redirect ; 相反,他们只是完全取代了stream。 因此,如果一个方法由于某种原因(例如,因为stream被作为parameter passing给某个对象)而具有一个variables的本地副本 ,则它将不起作用。 任何解决scheme

我可以redirect在Python的标准输出到某种types的string缓冲区?

我使用python的ftplib来编写一个小型的FTP客户端,但是一些包中的函数不返回string输出,而是打印到stdout 。 我想redirectstdout到一个对象,我将能够读取输出。 我知道stdout可以redirect到任何常规文件: stdout = open("file", "a") 但我更喜欢一种不使用本地驱动器的方法。 我正在寻找像Java中的BufferedReader ,可以用来将缓冲区包装到stream中。

在Python中pipe理标准输出时设置正确的编码

当对Python程序的输出进行pipe道输送时,Python解释器会对编码感到困惑,并将其设置为None。 这意味着这样一个程序: # -*- coding: utf-8 -*- print u"åäö" 在正常运行时会正常工作,但会失败: UnicodeEncodeError:'ascii'编解码器不能在位置0编码字符u'\ xa0':序号不在范围内(128) 当在pipe道序列中使用时。 当pipe道工作时,最好的方法是什么? 我可以告诉它使用任何编码的shell /文件系统/任何正在使用? 我迄今为止所看到的build议是直接修改你的site.py,或者使用这个黑客来硬编码默认编码: # -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf-8') print u"åäö" 有没有更好的方法来使pipe道工作?

将stdoutredirect到Python中的文件?

如何将stdoutredirect到Python中的任意文件? 当一个长时间运行的Python脚本(例如,web应用程序)从ssh会话中启动,并且ssh会话closures时,应用程序将会提高IOError,并在尝试写入标准输出时失败。 我需要find一种方法,使应用程序和模块输出到一个文件而不是标准输出,以防止由于IOError失败。 目前,我使用nohup来将输出redirect到一个文件,并且完成了这项工作,但是我想知道是否有办法做到这一点,而不使用nohup,出于好奇。 我已经尝试了sys.stdout = open('somefile', 'w') ,但是这似乎并没有阻止一些外部模块输出到terminal(或者sys.stdout = …所有)。 我知道它应该从我testing过的简单脚本开始工作,但是我还没有时间去testing一个web应用程序。