2013-07-21 9 views
1

J'avais des problèmes avec l'utilisation d'unicode en python, donc j'ai écrit ce programme, et je suis confus par les résultats. Chaque fois que je l'exécute, différents caractères me donnent l'erreur # 2, ce qui signifie que utf32, utf16 et utf8 ont tous donné des erreurs quand j'ai essayé d'écrire un caractère Unicode dans mon fichier de test. Jamais les mêmes. Est-ce un problème avec mon programme, ou est-ce que je fais quelque chose que Python n'est pas conçu pour gérer?Problèmes avec unicode en Python

for a in range(65535): 
    try: 
     open('test_text.txt','w').write(unichr(a).encode("utf32")) 
     if len(open('test_text.txt','r').read()) == 0: 
      print unichr(a) + ' Error #1 #' + str(a) 
    except IOError: 
     try: 
      open('test_text.txt','w').write(unichr(a).encode("utf16")) 
     except IOError: 
      try: 
       open('test_text.txt','w').write(unichr(a).encode("utf8")) 
      except IOError: 
       print unichr(a) + ' Error #2 #' + str(a) 
    except UnicodeEncodeError: 
     print unichr(a) + ' Error #3 #' + str(a) 
raw_input('\n\nEnter char to end:') 
+2

Quelles sortes d'erreurs voyez-vous? Peux-tu donner quelques exemples? – ethan

+1

Quel problème avez-vous eu qui vous a amené à écrire ce programme? Il peut être logique d'ouvrir une autre question sur les problèmes que vous aviez précédemment. – user2357112

+2

Je suppose que vous pourriez avoir des problèmes parce que vous ouvrez le même fichier pour lire au moins 65535 fois, sans le fermer, et en l'ouvrant simultanément pour lire. Toutes sortes de problèmes de tampons sont de cette façon. Et pas d'erreur ici ... – Tiago

Répondre

1

Votre code n'a pas renvoyé d'erreur lorsque je l'ai essayé. En outre, vous remplacez le fichier à chaque fois à travers la boucle. Vous pouvez essayer de changer le mode en 'a' au lieu de 'w' pour ajouter au fichier. Ou vous pouvez simplement faire ce qui suit:

f = open('test_text.txt','wb') 
for a in range(65535): 
    f.write(unichr(a).encode("utf32")) 
f.close() 

Il y a plus d'informations sur la lecture/écriture à des fichiers en python ici: http://docs.python.org/2/tutorial/inputoutput.html