未定义NameError

时间:2019-02-06 21:52:09

标签: python

请耐心等待,因为我还是编程新手。我正在编写一个Python脚本,它将登录到远程服务器并从文本文件中捕获字符串/文本。我使用pxssh作为我的模块来实现这一点。我尝试运行脚本,它给了我一个错误,提示 faultyhardware = getFaultyHardware() NameError:名称'getFaultyHardware'未定义。我尝试阅读本网站上的其他问题,但似乎一点也听不懂。有人可以指出正确的解决方法吗?感谢所有帮助。

#!/usr/bin/python

import pxssh
import getpass

try:

s = pxssh.pxssh()
hostname = raw_input('hostname: ')
username = raw_input('username: ')
password = getpass.getpass('password: ')
s.login (hostname, username, password)
s.sendline ('cat /home/ubuntu/output.txt')  
s.prompt()             
faultyhardware = getFaultyHardware(s.before)
for faulty in faultyhardware:
   print(faulty)
print s.before          
s.logout()

def getFaultyHardware(contents):

faulty = []
 content_list = contents.split(':')
 for x in range(len(content_list))
    is_exist = 'Location' in content_list[x]
    if is_exist == True:
      start = content_list[x+1].find("/")
      output = content_list[x+1][start:][:14]
      print(output)
      faulty.append(output)
return faulty

2 个答案:

答案 0 :(得分:2)

您应将getFaultyHardware的定义放在try语句之前。 Python是逐行解释的,因此在try时,getFaultyHardware尚未定义。

答案 1 :(得分:0)

使用该函数之前,必须先对其进行声明:

#!/usr/bin/python

import pxssh
import getpass

def getFaultyHardware(contents):

    faulty = []
     content_list = contents.split(':')
     for x in range(len(content_list))
        is_exist = 'Location' in content_list[x]
        if is_exist == True:
          start = content_list[x+1].find("/")
          output = content_list[x+1][start:][:14]
          print(output)
          faulty.append(output)
    return faulty

try:

s = pxssh.pxssh()
hostname = raw_input('hostname: ')
username = raw_input('username: ')
password = getpass.getpass('password: ')
s.login (hostname, username, password)
s.sendline ('cat /home/ubuntu/output.txt')  
s.prompt()             
faultyhardware = getFaultyHardware(s.before)
for faulty in faultyhardware:
   print(faulty)
print s.before          
s.logout()