J'essaie d'écrire dans un fichier, mais cela ne fonctionne pas. Je suis passé par étape avec le débogueur (il va à la commande écriture mais quand j'ouvre le fichier, il est vide).
Ma question est soit: "Comment puis-je voir quelle est l'erreur que je peux Déboguer? "," Que peut vous tromper en essayant d'écrire dans un fichier qui lui causerait de cette façon? ". P>
sqlScript = open('script-file.sql', 'a')
try:
sqlScript.write(sqlLine)
except IOError as (errno, strerror):
print "I/O error({0}): {1}".format(errno, strerror)
7 Réponses :
Le code suivant vous permet de voir quelle exception est-elle jetée et de voir une trace de l'endroit où elle est originaire.
try:
sqlScript.write(sqlLine)
except:
print "Unexpected error:", sys.exc_info()[0]
raise
J'ai utilisé votre code et je n'ai pas une erreur. C'est vraiment étrange.
@Boona êtes-vous sûr? Cela semble assez étrange. Aucune messagerie «erreur inattendue» apparaît sur votre console?
Si aucune exception n'est lancée, je soupçonnerais que la variable de chaîne 'sqlline' est vide. p>
l'avez-vous imprimé avant la déclaration d'écriture? p>
Je mettais une déclaration d'impression juste avant et la chaîne n'est pas vide.
bâtiment sur la réponse de Chris Morris, peut-être faire quelque chose comme ceci: Ceci va attraper une exception lancée (à condition que c'est une sous-classe de En outre, il est possible de définir plusieurs Exception code>, bien sûr ) et vous dire le type et le message d'erreur. P> sauf: code> cas pour différentes exceptions possibles, essayez peut-être de faire cela pour chaque exception être potentiellement jeté / élevé. p> p>
sont les mots-clés du script en minuscules? La même chose m'est arrivée dans un autre dB et je l'ai résolu en changeant des mots en majuscules. P>
Je n'ai même pas la chance de lancer le script car je ne peux pas l'écrire au fichier. : P (Remarque: Je n'écris pas directement à la DB mais que générer un script qui sera exécuté à une date ultérieure.)
Je viens de trouver le problème. Quand j'ai essayé de l'exécuter avec oisif au lieu de Pycham, cela fonctionnait. Je ne sais pas pourquoi. : P
Votre répertoire de travail actuel n'est pas ce que vous attendez qu'il soit et qu'il écrit avec succès à certains script-file.sql code> dans un autre répertoire. Essayez l'impression os.gecwd () code> et assurez-vous que c'est ce que vous attendez et regarde dans ce répertoire. P>
Intéressant! J'ai vérifié et c'est l'annuaire que je m'attendais.
Vous devez mettre votre curseur au début du fichier. Vous pouvez le faire avec voir cette réponse: https://stackoverflow.com/a/2949648/2119117 p> p> rechercher code> méthode:
C'est arrivé sur mon environnement Linux mais travaillez sur Windows Essayez
sqlScript = open('script-file.sql', 'a', 0)
Que voulez-vous dire par "ça ne marche pas"? Génère-t-il l'exception que vous attrapez-vous? Ou n'est pas généré une exception?
Avez-vous fermé ou affleurez-vous le fichier dans le processus Python avant de l'inspecter?
Alan: Cela ne génère pas d'erreur. Larsmans: Je ne l'ouvre que pour ajouter.
Est-ce votre code actuel? Compte tenu de la mauvaise indentation, je soupçonne pas et que quelque chose d'autre l'affecte. Avez-vous essayé d'exécuter votre code exactement comme il est affiché ici (définir SQLLINE une valeur vous-même)? Ce pourrait être le problème mensonges ailleurs. Vous devriez également examiner Le
avec code> Déclarationpour écrire des fichiers (avec Open ("script-fichier.sql ',' a ') comme sqlscript: code>).C'est le code réel (seulement j'ai changé le nom du fichier car il est le nom d'un client.) Il n'a pas gardé mon indentation quand je l'ai copié, alors je mets des espaces moi-même.