또 다른 질문은 unicode_literals를 사용할 때 바이트 문자열을 subprocess.Popen으로 파이프하는 방법을 살펴 보았습니다. How to fix an encoding migrating Python subprocess to unicode_literals?. 거기에 대한 해결책은 문제를 해결하고 하위 프로세스의 stdout 문자열을 수집 할 때 경고를 생성했습니다. unicode_literals가있는 파이썬 서브 프로세스 파이프에서 문자열을 검색하는 더 좋은 방법이 있습니까?
아직 사용
: 표준 출력을 수집 할 때from future import unicode_literals
처음에, 나는 같은 UnicodeDecodeError의 오류가 발생했습니다. 그래서! 나의 새로운 지식을 사용하여, 나는이 서비스는 별도의 스레드에서 표준 출력 수신 코드 업데이트 :
for text in iter(popen.stdout.readline,''):
text = text.decode(encoding)
text = text.strip(' \r\n')
이 오류를 고정,하지만 새로운 경고가 나타나
test.py:456: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
for text in iter(popen.stdout.readline,''):
을 조금 검색을 통해, 내가 발견
with warnings.catch_warnings():
warnings.simplefilter("ignore")
for text in iter(popen.stdout.readline,''):
text = text.decode('utf-8')
text = text.strip(' \r\n')
질문 : 불일치를 해결하는 방법이 있나요 또는이 처리하는 가장 좋은 방법을 억제되어이 같은 경고 메시지를 표시 할 수 있습니까?
를'(w/유용한 경고를 억제 O를!) 하지만 유니 코드 문자열'' ''과 비교하고 있습니다. 이것은 분명히 당신의 버그입니다. 대신에'b'''을 사용하면 더 잘 작동 할 것입니다 (유용한 경고를 억제하지 마십시오!). –
고마워, 알렉스. 당신이 당신의 코멘트를 대답으로 변환한다면, 나는 그것을 받아 들일 수 있고이 질문을 닫을 수 있습니다 ... 새해 복 많이 받으십시오! – tahoar
완료, 답변은에 있습니다. –