Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Failed to write to file but generates no Error

Tags:

python

file-io

I'm trying to write to a file but it's not working. I've gone through step-by-step with the debugger (it goes to the write command but when I open the file it's empty).

My question is either: "How do I see what the error is so I can debug?", "What can go wrong when trying to write to a file that would cause it to behave this way?".

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

    try:
         sqlScript.write(sqlLine)
    except IOError as (errno, strerror):
         print "I/O error({0}): {1}".format(errno, strerror)

This should be simple but I can't seem to find an answer. Also, I apologize in advance as English is a second language.

Edit: I put a print statement just before and the string is not empty.
Edit2: I'm using python 2.6 if that factors in somehow.

Edit 3: I've found a "solution" to my error. I decided to try and run my script using IDLE instead of PyCharm and it works like a charm (pun intended). I have no clue why, but there it is. Any reason why that would happen?!

like image 449
Boona Avatar asked Apr 04 '12 19:04

Boona


3 Answers

Building on Chris Morris' answer, maybe do something like this:

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

This will catch any Exception thrown (provided it's a subclass of Exception, of course) and tell you the type and the error message.

Also, it's possible to define multiple except: cases for different possible exceptions, so maybe try doing that for each exception that might be potentially thrown/raised.

like image 145
brettkelly Avatar answered Nov 10 '22 17:11

brettkelly


The following code allows you to see what exception it is that is being thrown, and see a trace of where it originated from.

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

See http://docs.python.org/tutorial/errors.html for more info.

like image 42
Chris Morris Avatar answered Nov 10 '22 17:11

Chris Morris


You have to put your cursor at the beginning of the file. You can do that with seek method:

myScript.seek(0)

See this answer: https://stackoverflow.com/a/2949648/2119117

like image 1
Lebugg Avatar answered Nov 10 '22 16:11

Lebugg