[python] ValueError: zero length field name in format.

사용하던 스크립트의 코드를
최신(그래봐야 수년 전이지만…) 트랜드로 맞춰보기 위해

  • 기존 : %s
  • 변경 : format 함수 사용

형태로 변경을 시도 함..

작성한 코드


check_result_msg = '{} - [{}] {} response : {}\n'.format(current_time, current_func_name, REAL_IP, request_result)

 

실행을 해보니 헐… 에러가..ㄷ ㄷ

ValueError: zero length field name in format.

요렇게…

아무리 봐도 코드가 틀린것 같지 않아서 찾아보니…
구버전 파이썬 문제라네…

세상에나
https://pyformat.info/
여기에서 참고 하고 갖다 썼음에도 뭔 이런 상황이… 라고 했으나..
저 페이지 중간에

With new style formatting it is possible (and in Python 2.6 even mandatory) to give placeholders an explicit positional index.

주의 문구가 있었다.. ㅎㅎㅎㅎㅎ

하필 이것을 테스트 했던 서버의 파이썬 버전이 2.6….

그래서 이렇게 변경 해줌


check_result_msg = '{0} - [{1}] {2} response : {3}\n'.format(current_time, current_func_name, REAL_IP, request_result)

변경후 제대로 실행 됨…

근데 2.6 에서는 저렇게 인덱스를 넣어줘야 한다면
중간에 필드를 추가 할 경우, 추가된 자리 이후의 인덱스에 죄다 +1 을 해줘야 한다는건데..
그러면 format 함수의 장점을 살린다고 보기 어렵지 않겠냐능…..

About KENNETH 10819 Articles
지락문화예술공작단

Be the first to comment

Leave a Reply

Your email address will not be published.


*


This site uses Akismet to reduce spam. Learn how your comment data is processed.