Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MINGW/MSYS Python 2.7.3上标准输出的行缓冲失败_Python_Mingw_Stdout_Output Buffering_Msys - Fatal编程技术网

在MINGW/MSYS Python 2.7.3上标准输出的行缓冲失败

在MINGW/MSYS Python 2.7.3上标准输出的行缓冲失败,python,mingw,stdout,output-buffering,msys,Python,Mingw,Stdout,Output Buffering,Msys,这个简单的脚本说明了这个问题: import time, os, sys sys.stdout = os.fdopen( sys.stdout.fileno(), 'w', 1 ) # line-buffer stdout print 'before sleep' time.sleep( 10 ) print 'after sleep' 如果行缓冲成功,则两行打印之间将有10秒的间隔。如果不是,两行将在10秒暂停后(一旦Python启动)几乎同时出现;也就是说,程序退出时打印行 在Linux上

这个简单的脚本说明了这个问题:

import time, os, sys
sys.stdout = os.fdopen( sys.stdout.fileno(), 'w', 1 ) # line-buffer stdout
print 'before sleep'
time.sleep( 10 )
print 'after sleep'
如果行缓冲成功,则两行打印之间将有10秒的间隔。如果不是,两行将在10秒暂停后(一旦Python启动)几乎同时出现;也就是说,程序退出时打印行

在Linux上,如果包含“sys.stdout”行,我可以看到文件和屏幕的行缓冲行为。如果没有该行,我会看到屏幕上的行缓冲行为,但不会看到文件。这是意料之中的

在MSYS/MINGW环境中,如果省略“sys.stdout”行,我会看到与Linux相同的行为:行缓冲到屏幕而不是文件

奇怪的是,对于“sys.stdout”行,我看不到对屏幕或文件的行缓冲。我希望两者都能看到,就像在Linux中一样

有人能提出解决办法吗

这里有更多的信息:

联阿援助团 MINGW32_NT-6.0 FOO 1.0.11(0.46/3/2)2009-05-23 19:33 i686 Msys

谢谢,
-我的一位同事知道答案

WIN32上不支持行缓冲。如果指定了行缓冲,它将恢复为完全缓冲。无缓冲输出可用,解决方法是在WIN32上使用它。我已经在我的简单测试程序中尝试过了,而且效果很好

参考号: