En Python 2.x avec 'fichier comme' objet:Comment écrire des octets dans un fichier en Python 3 sans connaître le codage?
sys.stdout.write(bytes_)
tempfile.TemporaryFile().write(bytes_)
open('filename', 'wb').write(bytes_)
StringIO().write(bytes_)
Comment faire la même chose en Python 3?
Comment écrire équivalent de ce code Python 2.x:
def write(file_, bytes_):
file_.write(bytes_)
Note: sys.stdout
est pas toujours sémantiquement un flux de texte. Il pourrait être utile de le considérer comme un flux d'octets parfois. Par exemple, make encrypted archive of dir/ on remote machine:
tar -c dir/ | gzip | gpg -c | ssh [email protected] 'dd of=dir.tar.gz.gpg'
Il n'y a pas de point d'utiliser Unicode dans ce cas.
Est-il possible d'écrire fonction générale sans avoir recours à une vérification du type tel que 'isinstance (fichier_, io .TextIOWrapper) ', etc. – jfs
@JF, Python 3 est conçu spécifiquement pour gérer le texte v. Binaire diviser correctement. Sans connaître l'encodage, il n'y a pas de chemin correct entre binaire et texte. Il n'y a donc aucun moyen d'écrire une fonction générale qui écrit des octets dans un flux de texte. Plongez dans Python 3 a un bon [article] (http://diveintopython3.org/strings.html) sur ce sujet. –
La question concerne spécifiquement * octets *. Par exemple, 'os.write (sys.stdout.fileno(), bytes_)'. – jfs