【发布时间】:2015-02-07 05:29:05
【问题描述】:
我使用paramiko ssh 在远程计算机上运行cat /tmp/file,其中包含一个数字。
这个数字需要和0比较。
stdin, stdout, stderr = client.exec_command('cat /tmp/file')
print("stdout:")
print(stdout)
print("\nstdout.read():")
print(stdout.read())
print("\nif not int(errlvl) == 0:")
errlvl = stdout.read()
if not int(errlvl) == 0:
输出:
stdout:
<paramiko.ChannelFile from <paramiko.Channel 35 (open) window=2097152 -> <paramiko.Transport at 0x2b36750 (cipher aes128-ctr, 128 bits) (active; 1 open channel(s))>>>
stdout.read():
b'0\n'
int(stdout.read())
Traceback (most recent call last):
[...]
if not int(errlvl) == 0:
ValueError: invalid literal for int() with base 10: b''
如何在我的if 中使用int 值,在本例中为0?
【问题讨论】:
-
不是
b'0\n',而是一个空字节串b''。int(b'0\n')工作。 -
您打印的内容不正确。
print errlvl -
stdout.read()移动文件指针,如果你再次调用它,你将一无所获。
标签: python casting int byte paramiko