如何用paramiko读取文件?

时间:2017-07-31 00:10:44

标签: python paramiko

我使用paramiko创建了一些脚本。 我的脚本使用ssh连接,输出文件和打印输出文件。

当我运行脚本时,我收到以下错误:

  

追踪(最近一次通话):         文件“test.py”,第31行,in           印刷线       ValueError:关闭文件的I / O操作

我的剧本,

#!/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)

根据我的脚本发生此错误的任何想法?

1 个答案:

答案 0 :(得分:0)

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()