2011-08-27 8 views
1

최근 내 응용 프로그램에서이 문제를 가지고하지 호출 오류입니다 :무작위로 NoneType 객체가

File "main.py", line 31, in File "app.pyc", line 205, in run TypeError: 'NoneType' object is not callable"

내 코드 :

xml = EXML() 
for pid, product in store.products.items(): 
    xml.addRow() 
    xml.addCell((product['name']).encode('utf-8'), "String") 
    xml.addCell((product['symbol']).encode('utf-8'), "String") 
    xml.addCell((product['brand_name']).encode('utf-8'), "String") # line 205 
    xml.addCell(str(product['price']), "String") 

파이썬 2.7 32 비트

그것은 유선의, 왜냐하면 이것은 ~ 1000 회 반복 후에 나타 났고, 어떤 선결 문제도 없었기 때문입니다. 이 응용 프로그램은 현재 가격을 얻기 위해 온라인 상점을 검색합니다. 처음에 나는 어딘가에 someting을 놓친 것 같았고, 그 결과로 None.encode('utf-8')가 있었지만, no, 그리고 ".encode ('utf-8')가 작동하는 것 같았다. 또한, 테스트 사이트에서이 오류를 재현 할 수 없으며 때로는 ~ 2500 제품으로 열심히 일하는 동안 나타납니다. 이 오류의 다른 원인은 무엇입니까?

+0

@Roman에 동의합니다. 일반적으로 코드에서와 같이 긴 한 줄짜리 코드는 피하는 것이 좋습니다. 메서드의 결과에 대한 함수 결과에 대한 메서드 호출 - 이해하기 어렵고 오류가 발생하면 어딘가에 찾아내는 것이 훨씬 더 힘듭니다. 또한 스크립트 실행이 종료되면 인터프리터를 호출하기 위해'python -i'를 사용하여 응용 프로그램을 실행 한 다음'import pdb'를 호출하고'pdb.pm()'을 호출 할 수 있습니다. 이것은 마지막 추적에서 Pdb 세션을 열어야하며 잘못된 점을 검사 할 수 있습니다. – immortal

답변

1
>>> None.encode 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'NoneType' object has no attribute 'encode' 
>>> None() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: 'NoneType' object is not callable 

주어진 줄에서 어떻게 든 None이라는 두 함수 중 하나를 설정해야합니다. str을 덮어 쓰는 것이 오히려 흔한 오류이기 때문에 다음 줄이 아닌 것은 확실합니다.

+0

str이 덮어 쓰여지지 않았 음을 확신합니다. urllib2.HTTPException 또는 AttributeError를 파서에서 처리 할 때 문제가 발생한다고 생각합니다. 나는 하나 더 행동 한 것으로 나타났습니다 : 스크립트에서 나는 읽기 전에 파일 핸들을 닫고 있으며 때로는 오류 만 발생했습니다. – HiIAmFromPoland

0

OK, 그것은 비트 희한입니다, 해결하지만,이 오류는 때때로 어떤 product['brand_name']에 의해 발생 BeautifulSoup.tag (
태그이 시간을) 대신 BeautifulSoup.NavigableString 나는 계획대로. 나는 아직도 왜 그리고 왜 태어나지 않는가?

Anywat, 응답 해 주셔서 감사합니다. :)