2012-01-10 4 views
0

약간의 문제가 있습니다. 어떤 이유로,이 클래스는 모든 의도와 목적을 위해 내가 말할 수있는 한 제대로 응답해야 할 때 NoneType 오류를 내고 있습니다.인스턴스 변수에 NoneType 오류가 발생했습니다.

import re 
import subprocess 

class progEnv(object) : 

    hostName_regex = re.compile('[a-z][a-z]prog[a-z][a-z][a-z]\d\d') 
    hostDomain_regex = re.compile('(prod|dev|qa1|stag)\.company\.net') 
    hostNum_regex = re.compile('[a-z][a-z]prog[a-z][a-z][a-z](\d\d)') 
    hostPrefix_regex = re.compile('\w\wprog') 
    hostTier_regex = re.compile('(web|app)') 
    hostId_regex = re.compile('[a-z][a-z]prog[a-z][a-z][a-z]\d\d([a-z])') 
    hostEnv_regex = re.compile('(prod|dev|qa1|stag)') 

    def __init__(self) : 
     self.hostnameProc = subprocess.Popen('hostname', stdout=subprocess.PIPE) 
     self.fqdn = self.hostnameProc.stdout.read() 
     self.hostName = self.hostName_regex.search(self.fqdn) 
     self.hostDomain = self.hostDomain_regex.search(self.fqdn) 
     self.hostNum = self.hostNum_regex.search(self.hostName.group()) 
     self.hostPrefix = self.hostPrefix_regex.search(self.hostName.group()) 
     self.hostTier = self.hostTier_regex.search(self.hostName.group()) 
     self.hostId = self.hostId_regex.search(self.hostName.group()) 
     self.hostEnv = self.hostEnv_regex.search(self.hostName.group()) 

나는의 오류 self.hostName.group()에 대한 호출에 프로그램이 실패 progEnv 클래스를 인스턴스화 할 때 : 무슨 일이 일어나고 있는지에

Traceback (most recent call last): 
    File "./test.py", line 5, in <module> 
    env = prog_env.progEnv() 
    File "/prog/eclipse/workspace/PROG Management Command/prog_env.py", line 28, in __init__ 
    self.hostNum = self.hostNum_regex.search(self.hostName.group()) 
AttributeError: 'NoneType' object has no attribute 'group' 

어떤 생각?

답변

3

즉, 정규식이 일치하지 않으므로 self.hostName_regex.search(self.fqdn)None을 반환합니다. 물론 None.group() 방법을 사용할 수 없습니다.

+0

당신은 처음으로 반응했으며 나는 지금 무슨 일이 일어나고 있는지 정확하게 깨달았습니다. 잠시 시간을내어 얼굴 표정을 지을 시간. 방금 오류가 throw되는 이유는 정규식 스키마와 일치하지 않는 서버에서 실행 중이기 때문입니다. 응. 도와 주셔서 감사합니다! – Drahkar

0

groupNone에 액세스하려고한다는 오류 메시지가 표시됩니다. 표시된 코드 줄에서 self.hostNameNone이어야합니다. self.hostName을 초기화하는 데 사용한 정규식 검색이 일치하지 않아야합니다.

자세히 알아보기, 당신은 완전히 오류 메시지를 이해하지 못하는 것 같습니다. "NoneType 오류 발생"이 아니며 AttributeError을 표시합니다. AttributeError에 대한 오류 메시지는 개체 유형을 나타내며 None 유형은 NoneType입니다. self.fqdn는 정규식과 일치하지 않을 때

+0

여기에서 문서 http://docs.python.org/library/re.html#re.search – roberkules

0
self.hostName = self.hostName_regex.search(self.fqdn) 

이 라인은 None self.hostName에 값을 설정한다. 어떤 오류가 발생합니다.

self.hostNum = self.hostName and self.hostNum_regex.search(self.hostName.group()) 

은 그 group 방법을 사용하기 전에 self.hostName을 확인, 뭔가 등에 종속 라인을 변경합니다.

관련 문제