Python 2.x에서 'file-like'객체 사용 :인코딩을 모른 채 Python 3에서 파일에 바이트를 쓰는 방법은 무엇입니까?
sys.stdout.write(bytes_)
tempfile.TemporaryFile().write(bytes_)
open('filename', 'wb').write(bytes_)
StringIO().write(bytes_)
Python 3에서 같은 작업을 수행하는 방법은 무엇입니까?
이 Python 2.x 코드와 동등한 코드 작성 방법 :
def write(file_, bytes_):
file_.write(bytes_)
참고 : sys.stdout
은 의미 상 텍스트 스트림이 아닙니다. 때로는 바이트 스트림으로 간주하는 것이 좋습니다. 예를 들어, make encrypted archive of dir/ on remote machine :
tar -c dir/ | gzip | gpg -c | ssh [email protected] 'dd of=dir.tar.gz.gpg'
이 경우 유니 코드를 사용할 필요가 없습니다.
검사 입력에 의존하지 않고 일반 함수를 작성하는 방법이 있나요 같은 IO isinstance (file_,'으로 .TextIOWrapper)'등 – jfs
@JF, Python 3은 텍스트 대 바이너리 분할을 올바르게 처리하도록 특별히 설계되었습니다. 인코딩을 알지 못하면 바이너리와 텍스트간에 올바른 방법이 없습니다. 따라서 텍스트 스트림에 바이트를 쓰는 일반 함수를 작성하는 방법은 없습니다. Python 3에 대한 다이브는 이것에 대한 좋은 [article] (http://diveintopython3.org/strings.html)을 가지고 있습니다. –
질문은 특히 * bytes *에 관한 것입니다. 예를 들어,'os.write (sys.stdout.fileno(), bytes_)'. – jfs