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) 
  • Lesen Sie riesige Datei in Python
  • Atom-Datei schreiben Operationen (Cross-Plattform)
  • Python verketten Textdateien
  • Ist es möglich, Zeilen in einer Datei an Ort und Stelle zu ändern?
  • Lesen Sie eine Datei vom Server mit ssh mit python
  • Pausen von Apache-Protokolldateien
  • Python-Komprimierung einer Reihe von JSON-Objekten bei der Serienübertragung?
  • Python-Funktion, die Datei-Objekt oder Pfad akzeptiert
  • Weg, um Essiggurken aus und aus ipython / jupyter Notebook zu extrahieren
  • Schreiben einer Python-Liste von Listen in eine CSV-Datei
  • Wie lese ich die Anzahl der Dateien in einem Ordner mit Python?
  • Python ist die beste Programmiersprache der Welt.