2009-08-03 7 views
21

La fonction os.write peut être utilisée pour écrire des octets dans un descripteur de fichier (pas un objet fichier). Si j'exécute os.write(fd, '\n'), seul le caractère LF sera écrit dans le fichier, même sous Windows. Je voudrais avoir CRLF dans le fichier sur Windows et seulement LF sous Linux.
Quel est le meilleur moyen d'y parvenir? J'utilise Python 2.6, mais je me demande aussi si Python 3 a une solution différente.Comment écrire un caractère newline natif dans un descripteur de fichier en Python?

+0

'os.write' a besoin du FD comme premier argument - SVP corrigez cette question! Et non, Python 3 n'est pas fondamentalement différent (sauf qu'il veut des bytestrings, pas du texte - qui est toujours Unicode dans Python 3 - dans les appels os.whatever). –

+0

Vous avez raison, merci! – hcs42

Répondre

46

Utilisez cette

import os 
os.write(fd, os.linesep) 
8

Que diriez-vous os.write(<file descriptor>, os.linesep)? (import os est inutile car vous semblez l'avoir déjà importé, sinon vous obtiendriez des erreurs en utilisant os.write pour commencer.)

Questions connexes