Sortie des caractères ascii dans stdout dans Python 3

J’ai un fichier nommé ‘xxx.py’ comme ceci:

print("a simple ssortingng") 

et quand je cours comme ça (Python 3):

 python xxx.py >atextfile.txt 

Je reçois un fichier unicode.

Je voudrais un fichier ascii.

Cela ne me dérange pas si une exception est levée si un caractère non ascii est tenté d’être imprimé.

Quelle est une simple modification que je peux apporter à mon code et qui produira des caractères ascii?

Mes recherches aboutissent à des solutions qui semblent toutes trop verbeuses pour un problème aussi simple.

[Modifier] pour signaler ce que j’ai appris en paramétrant LC_CTYPE:

Je cours sur Windows 7.

  1. En cours d’exécution sur la ligne de commande de powershell, je reçois un fichier unicode (deux octets / caractère)
  2. Lors de l’exécution dans un fichier .bat sans LC_CTYPE défini, je reçois un fichier ascii (peut être utf-8 comme @jwodder l’a souligné).
  3. Lors de l’exécution dans un fichier .bat avec LC_CTYPE = ascii set, je peux supposer un fichier ASCII (1 octet / caractère).

Le codage stdout est défini par l’environnement qui exécute le script python, par exemple:

 $ python -c "import sys; print(sys.stdout.encoding)" UTF-8 $ LC_CTYPE=ascii python -c "import sys; print(sys.stdout.encoding)" US-ASCII 

Essayez d’ajuster votre environnement avant d’exécuter le script. Vous pouvez forcer la valeur d’encodage pour Python en définissant la variable d’environnement PYTHONIOENCODING .