出于某些原因,我必须使用mysql
而不是Paramiko。
我有这个(简化的)代码段:
stdin, stdout, stderr = c.exec_command("mysql stuff -e 'rename table foo to bar'")
print stdout.read()
print stderr.read()
但如果表foo
不存在,我没有输出(没有stdout
或stdin
输出。
但这很奇怪,因为:
stdin, stdout, stderr = c.exec_command("mysql stuff -e 'rename table foo to bar'")
if stderr.read()
print "Error: %s" % stderr.read()
print type(stderr.read())
有这个输出:
Error:
<type 'str'>
mysql
错误通常是:
ERROR 1017(HY000)第1行:找不到文件:'。/ stuff / foo.frm'(错误号:2 - 没有这样的文件或目录)
我想要更详细的错误输出,但我不能拥有它。为什么呢?
答案 0 :(得分:2)
您无法阅读stdin
。这是输入,而不是输出。
这就是为什么你得到“文件未开放阅读”。它与您mysql
命令无关。
答案 1 :(得分:0)
if stderr.read()
print "Error: %s" % stderr.read()
print type(stderr.read())
第一次调用stderr.read()
会使后续调用返回任何内容。
将其更改为:
for line in stderr:
print "Error: %s" % line