2012-11-21 2 views
1

J'ai un fichier .dat, codé en ANSI qui contient des caractères NUL (pas seulement!). Je ne voulais pas le lire dans un objet str, mais je ne le ferais pas dans tout le str obtenu. Mais file.read() s'arrête lorsque le premier NUL est atteintConitnue à lire NUL

Je suis perdu :)

Mon code:

file=open(source, mode='rt') 
fulltext=file.read() 
print(fulltext) 

est NUL spectacle avec Notepad ++ je suis sous Windows XP, avec PortablePython 3.2 Le fichier est un fichier DAT spécial qui peut être édité avec le bloc-notes en tant que texte.

+1

Je ne pense pas que EOF et NUL (vous voulez dire juste 0?) Sont les mêmes, donc 'file.read()' ne devrait pas s'arrêter. Pouvez-vous nous montrer le code que vous utilisez, et nous dire 1) la version Python que vous utilisez, et 2) sur quelle plate-forme vous êtes? – Evert

+0

édité ... iot montre le code –

+1

Il se peut que le pyscripter soit le problème. Le "Related" barre latérale a montré [this] (http://stackoverflow.com/questions/7581963/read-stops-after-nul-character?rq=1), qui a un problème similaire (connecteur socket au lieu d'un fichier), où la résolution était de ne pas utiliser pyscripter. – Evert

Répondre

0

Comme Evert l'a commenté dans ma question, le problème était centré sur l'utilisation de Pyscripter! Donc, cette question est fermée :)

+0

Je vais essayer de contacter l'équipe de Pyscripter ... –

1

Si vous voulez lire des octets comme 0, il y a de fortes chances que votre fichier soit un fichier binaire. Lire en mode binaire rb au lieu du mode texte rt.

+1

'\ x00' est la façon dont vous codez l'octet NUL dans les littéraux de chaîne Python. Le fichier est probablement lu correctement alors regardez comment vous l'imprimez. – Kos

+0

Qu'essayez-vous de faire? – Kos

+0

Mais 13 Mo de données ne vont pas sur un écran de toute façon – Kos