On 6/18/14, 4:03 PM, cutey Love wrote:
I'm trying to write data to a text file

But I'm getting the error:

TypeError: invalid file: <_io.TextIOWrapper

Always better to err on posting too much context (the entire traceback) than too little.


Code is

def saveFile():
     file_path = filedialog.asksaveasfile(mode='w', filetypes=[('text files', '.txt')], 
defaultextension=".txt")
     fo = open(file_path, 'w')

I used Google (searched on "filedialog.asksaveasfile") to realize that you are likely using Tkinter. I then used Google to find out the API for filedialog.asksaveasfile() and I found that it returns the ALREADY OPEN FILE for you to write to, not the name of the file you are writing to.

Referring to that same documentation, I see there's another function you are probably more interested in: filedialog.asksaveasfilename(). Then, you can open the file, write to it, and close it and be in control of every step. Not sure which is preferable, though, as I have no (recent) Tkinter experience.



     for e in myList:
         fo.write(e)


     fo.close()

You should use a context manager to open, write to, and close files. Such as:

with open(file_path, 'w') as fo:
    for e in myList:
        fo.write(e)

The file is being created if not already present but no data is written

filedialog.asksaveasfile() was opening it for you. It was being closed automatically when file_path fell out of scope (after the exception caused by your fo = open(file_path, 'w') line.

My response was intended to help.
Paul

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to