pourquoi suis-je IOError: (9, 'Mauvais descripteur de fichier') erreur tout en faisant imprimer les relevés de compte?
Je suis en cours d'exécution d'un python2.5 script sur un serveur windows 2003 en tant que service. J'obtiens cette erreur pour la simple impression de relevés:
IOError: (9, 'Bad file descriptor')
J'ai supprimé toutes les instructions d'impression, parce qu'ils ont été utilisés uniquement à des fins de développement, mais je ne suis pas sûr pourquoi une instruction print me ferait tout greif. J'ai couru le même script, non pas comme un service sans aucun problème majeur. Je me demandais si quelqu'un a une quelconque idée?
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas imprimer car
sys.stdout
n'est pas disponible lors de l'exécution d'une session de console.Au lieu d'utiliser
print
des instructions que vous pouvez envisager d'utiliser lalogging
module de sorte que vous pouvez définir le niveau de journalisation et d'écrire tous les éléments essentiels pour le journal des événements système.Il convient de noter que vous pouvez encore le faire travailler (ou les ignorer en silence le problème) en faisant quelque chose comme ceci:
Pour écrire dans un fichier par flux de sortie:
Pour écrire dans un fichier unique:
Ou à ignorer en silence toutes les instructions d'impression:
sys.stdout = open(os.devnull, 'w')
print
appels) avant d'échouer, toujours dans le même appel de print, avec cette erreur.En Python 2.x, c'est le comportement attendu. Dans ce rapport de bug, Christian Heimes explique que c'est une décision de conception:
Il recommande également d'une solution de contournement pour obtenir Python 3.x-style
print()
comportement en Python 2.7: