Как записать байты в файл в Python 3, не зная кодировки?

В Python 2.x с «файловым» объектом:

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 не всегда семантически является текстовым потоком. Иногда может быть полезно рассматривать его как поток байтов. Например, сделать зашифрованный архив каталога / на удаленной машине :

tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'

В этом случае нет смысла использовать Unicode.

48
задан jfs 28 November 2010 в 16:13
поделиться