【发布时间】:2012-11-08 02:49:01
【问题描述】:
我有一个使用子进程来获取 HTML 的脚本:
misha@misha-K42Jr:~/git/domain_classifier$ python webkit_retrieve.py error-cut.txt html/error -N 5
http://kurabo.co.jp HostNotFoundError
http://monarch.com HostNotFoundError
http://nssmgmt.com HostNotFoundError
http://sbcglobal.net HostNotFoundError
http://dynamixcorp.com SslHandshakeFailedError
http://groupe-synox.com RemoteHostClosedError
QFont::setPixelSize: Pixel size <= 0 (0)
http://www.cnn.com NoError
http://pacbell.net TimeoutError
如果我运行相同的脚本,但将输出重定向到一个文件,我在输出中什么也得不到:
misha@misha-K42Jr:~/git/domain_classifier$ python webkit_retrieve.py error-cut.txt html/error -N 5 > stdout.txt
QFont::setPixelSize: Pixel size <= 0 (0)
misha@misha-K42Jr:~/git/domain_classifier$ cat stdout.txt
misha@misha-K42Jr:~/git/domain_classifier$
为什么输出是空的?它不应该包含在第一种情况下打印到标准输出的相同内容吗?
问题不在于合并标准输出和标准错误,而是为什么重定向标准输出会产生一个空文件
【问题讨论】:
-
你在文件中得到了什么?
-
文件是空的,因此
cat stdout.txt什么也没有打印出来。 -
设置输出文件句柄和自己做输出的 python 源是什么?
-
如果两个命令的输出 不同 并且
stdout.txt确实为空,那么如果重定向 stdout,python 脚本的行为会有所不同
标签: python linux bash io-redirection