반응형
파이썬 3에서 바이너리 데이터를 stdout에 쓰는 방법은 무엇입니까?
파이썬 2.x에서는 다음과 같이 할 수 있습니다.
import sys, array
a = array.array('B', range(100))
a.tofile(sys.stdout)
그러나 이제 나는 TypeError: can't write bytes to text stream
. 사용해야하는 비밀 인코딩이 있습니까?
더 나은 방법 :
import sys
sys.stdout.buffer.write(b"some binary data")
import os
os.write(1, a.tostring())
또는 os.write(sys.stdout.fileno(), …)
그것이 1
당신 보다 더 읽기 쉬운 경우 .
Python 3에서만 사용할 수있는 관용적 인 방법은 다음과 같습니다.
with os.fdopen(sys.stdout.fileno(), "wb", closefd=False) as stdout:
stdout.write(b"my bytes object")
stdout.flush()
좋은 부분은 파이썬에서 모두가 익숙한 일반 파일 객체 인터페이스를 사용한다는 것입니다.
블록을 종료 할 때 closefd=False
닫히지 않도록 설정 sys.stdout
하고 with
있습니다. 그렇지 않으면 프로그램이 더 이상 stdout으로 인쇄 할 수 없습니다. 그러나 다른 종류의 파일 설명 자의 경우 해당 부분을 건너 뛸 수 있습니다.
python3에서 인코딩을 지정하려면 아래와 같이 bytes 명령을 계속 사용할 수 있습니다.
import os
os.write(1,bytes('Your string to Stdout','UTF-8'))
여기서 1은 stdout-> sys.stdout.fileno ()에 해당하는 일반적인 숫자입니다.
그렇지 않으면 인코딩에 신경 쓰지 않으면 다음을 사용하십시오.
import sys
sys.stdout.write("Your string to Stdout\n")
인코딩없이 os.write를 사용하려면 아래를 사용해보십시오.
import os
os.write(1,b"Your string to Stdout\n")
참고 URL : https://stackoverflow.com/questions/908331/how-to-write-binary-data-to-stdout-in-python-3
반응형
'program story' 카테고리의 다른 글
php-fpm 및 Nginx Docker 컨테이너를 올바르게 연결하는 방법은 무엇입니까? (0) | 2020.09.14 |
---|---|
VB.NET 코드를 C #으로 마이그레이션 할 때 for 루프가 다르게 작동하는 이유는 무엇입니까? (0) | 2020.09.14 |
재귀 하위 폴더 검색 및 목록 파이썬에서 파일 반환 (0) | 2020.09.13 |
Angular의 $ location.path 내부에 매개 변수 전달 (0) | 2020.09.13 |
XPath를 사용하여 링크 텍스트로 링크 URL을 어떻게 찾을 수 있습니까? (0) | 2020.09.13 |