Fehler beim Schreiben in Datei, aber generiert kein Fehler

Ich versuche, eine Datei zu schreiben, aber es funktioniert nicht. Ich habe Schritt für Schritt mit dem Debugger gegangen (es geht an den Schreibbefehl, aber wenn ich die Datei öffne, ist es leer).

Meine Frage ist entweder: "Wie kann ich sehen, was der Fehler ist, also kann ich debuggen?", "Was kann schief gehen, wenn man versucht, auf eine Datei zu schreiben, die dazu führen würde, dass sie sich so verhält?"

sqlScript = open('script-file.sql', 'a') try: sqlScript.write(sqlLine) except IOError as (errno, strerror): print "I/O error({0}): {1}".format(errno, strerror) 

Das sollte einfach sein, aber ich kann keine Antwort finden. Auch ich entschuldige mich im Voraus als Englisch ist eine zweite Sprache.

Edit: Ich habe eine Druck-Anweisung kurz vor und die Zeichenfolge ist nicht leer.
Edit2: Ich benutze python 2.6 wenn das irgendwie fällt.

Bearbeiten 3: Ich habe eine "Lösung" zu meinem Fehler gefunden. Ich habe mich entschlossen, mein Skript mit IDLE anstelle von PyCharm zu betreiben und es funktioniert wie ein Charme (Wortspiel beabsichtigt). Ich habe keine Ahnung warum, aber da ist es. Jeder Grund, warum das passieren würde ?!

7 Solutions collect form web for “Fehler beim Schreiben in Datei, aber generiert kein Fehler”

Aufbauend auf Chris Morris 'Antwort, vielleicht etwas so machen:

 try: sqlScript.write(sqlLine) except Exception as e: print type(e) print str(e) 

Dies wird fangen jede Ausnahme geworfen (vorausgesetzt, es ist eine Unterklasse von Exception , natürlich) und Ihnen sagen, die Art und die Fehlermeldung.

Auch ist es möglich, mehrere zu definieren, except: Fälle für verschiedene mögliche Ausnahmen, also vielleicht versuchen, das für jede Ausnahme, die möglicherweise geworfen / erhöht werden könnte.

Der folgende Code erlaubt Ihnen, zu sehen, welche Ausnahme es ist, die geworfen wird, und sehen Sie eine Spur von woher es entstand.

 try: sqlScript.write(sqlLine) except: print "Unexpected error:", sys.exc_info()[0] raise 

Weitere Informationen finden Sie unter http://docs.python.org/tutorial/errors.html .

Du musst den Cursor am Anfang der Datei setzen. Sie können das mit seek :

 myScript.seek(0) 

Siehe diese Antwort: https://stackoverflow.com/a/2949648/2119117

Wenn keine Ausnahme geworfen wird, würde ich vermuten, dass die String-Variable 'sqlLine' leer ist.

Haben Sie es vor der Schreiberklärung ausgedruckt?

Sind die Schlüsselwörter im Skript in Kleinbuchstaben? Dasselbe passierte mir in einem anderen db und ich löste es durch das Ändern von Wörtern zu UPPERCASE.

Ihr aktuelles Arbeitsverzeichnis ist nicht das, was Sie erwarten, es zu sein und es ist erfolgreich zu schreiben, um einige script-file.sql in einem anderen Verzeichnis. Versuchen Sie, os.getcwd() und stellen Sie sicher, dass es das ist, was Sie erwarten, und schauen Sie in diesem Verzeichnis.

Es passiert auf meiner Linux-Umgebung, aber die Arbeit an Windows versuchen

 sqlScript = open('script-file.sql', 'a', buffering=False) 

oder

 sqlScript = open('script-file.sql', 'a', 0) 
  • Python-Datei-Modi Detail
  • Wie zu vermeiden Python FileInput Pufferung
  • Python: Rückgängig einer Python-Datei readline () -Operation, so dass der Zeiger der Datei wieder im Originalzustand ist
  • Kann () mit Dateien in Python unter Windows verwendet werden?
  • Verbessern Sie die Geschwindigkeit des Lesens und der Konvertierung von Binärdatei?
  • Python-Komprimierung einer Reihe von JSON-Objekten bei der Serienübertragung?
  • Wie man eine Liste von floats zu einer Binärdatei in Python ausgibt
  • Abrufen von Textblöcken aus Datei
  • Schreiben Sie neue Daten in die Mitte einer Datei
  • Verhalten der truncate () - Methode in Python
  • Lesen Sie aus einer Protokolldatei, wie es mit python geschrieben wird
  • Python ist die beste Programmiersprache der Welt.