programing

파이썬 3에서 stdout에 이진 데이터를 쓰는 방법은 무엇입니까?

telecom 2023. 5. 15. 21:16
반응형

파이썬 3에서 stdout에 이진 데이터를 쓰는 방법은 무엇입니까?

python 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")

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으로 인쇄할 수 없습니다.그러나 다른 종류의 파일 설명자의 경우에는 해당 부분을 건너뛰는 것이 좋습니다.

import os
os.write(1, a.tostring())

아니면,os.write(sys.stdout.fileno(), …)그것이 보다 읽기 쉽다면,1널 위해서.

python3에서 인코딩을 지정하려는 경우에도 아래와 같은 bytes 명령을 사용할 수 있습니다.

import os
os.write(1,bytes('Your string to Stdout','UTF-8'))

여기서 1은 stdout --> sys.stdout에 해당하는 일반적인 숫자입니다.서류철로

그렇지 않으면 인코딩을 신경 쓰지 않는 경우 다음을 사용합니다.

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

반응형