En Python 2.x con 'archivo-como' objeto:¿Cómo escribir bytes en un archivo en Python 3 sin conocer la codificación?
sys.stdout.write(bytes_)
tempfile.TemporaryFile().write(bytes_)
open('filename', 'wb').write(bytes_)
StringIO().write(bytes_)
Cómo hacer lo mismo en Python 3?
cómo escribir equivalente de este código Python 2.x:
def write(file_, bytes_):
file_.write(bytes_)
Nota: sys.stdout
no siempre es semánticamente un flujo de texto. Podría ser beneficioso considerarlo como un flujo de bytes a veces. Por ejemplo, make encrypted archive of dir/ on remote machine:
tar -c dir/ | gzip | gpg -c | ssh [email protected] 'dd of=dir.tar.gz.gpg'
no hay ningún punto para utilizar Unicode en este caso.
¿Hay una manera de escribir función general sin recurrir a la comprobación de tipos como 'isinstance (file_, io .TextIOWrapper) ', etc. – jfs
@JF, Python 3 está diseñado específicamente para manejar el texto v. División binaria correctamente. Sin conocer la codificación, no hay una forma correcta de ir entre el binario y el texto. Por lo tanto, no hay forma de escribir una función general que escriba bytes en una secuencia de texto. Dive Into Python 3 tiene un buen [artículo] (http://diveintopython3.org/strings.html) sobre esto. –
La pregunta es específicamente sobre * bytes *. Por ejemplo, 'os.write (sys.stdout.fileno(), bytes_)'. – jfs