如何使用 paramiko 读取文件?

How can I read a file with paramiko?

我使用 paramiko 制作了一些脚本。 我的脚本使用 ssh 连接、输出文件和打印文件。

当我执行 运行 脚本时,出现以下错误:

Traceback (most recent call last): File "test.py", line 31, in print line ValueError: I/O operation on closed file

我的脚本,

#!/usr/bin/python
# -*- coding: utf-8 -*-

### Netapp C-Mode Connection and command excute
import paramiko
import sys
import pandas as pd
import xlsxwriter

from paramiko import AutoAddPolicy

sip = raw_input('input IP.\n')
sid = raw_input('input ID.\n')
spass = raw_input('input PASS.\n')

client = paramiko.SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(AutoAddPolicy())
client.connect(hostname=sip, username=sid, password=spass)

stdin, stdout, stderr = client.exec_command('hostname')
sys.stdout=open("c_host.txt","w")
print (stdout.read()).strip()
sys.stdout.close()

client.close()

f = open("c_host.txt")
for line in f:
        print (line)

根据我的脚本,您是否知道为什么会出现此错误?

print 的默认目标是 sys.stdout,您将其重定向并关闭了尝试 print 上方的 4 行。不要重定向 sys.stdout,只需告诉 print 你想要的目标是什么(或使用文件的 write 方法):

stdin, stdout, stderr = client.exec_command('hostname')
target_f = open("c_host.txt", "w")
print(stdout.read().strip(), file=target_f)
target_f.close()