By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,097 Members | 1,580 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,097 IT Pros & Developers. It's quick & easy.

file.readlines() - gives me error (bad file descriptor)

P: n/a
Hey guys,

I can't figure this one out, why is this simple script giving me
problems?

logfile=file(r'test.txt','w')
logfile.write('datetime')
test=logfile.readlines()

When I run it I get the error message:
Traceback (most recent call last):
File "C:\Documents and Settings\Gregory\My Documents\Get New Great
Job\testfile.py", line 3, in ?
test=logfile.readlines()
IOError: [Errno 9] Bad file descriptor

I'm running Windows XP, Python 2.3.3 (#51, Dec 18 2003, 20:22:39) [MSC
v.1200 32 bit (Intel)] on win32
Any help would be greatly appricated.

Thanks,

Greg

Jul 18 '05 #1
Share this Question
Share on Google+
9 Replies


P: n/a
Thus spake wo********@gmail.com (wo********@gmail.com):
Hey guys,

I can't figure this one out, why is this simple script giving me
problems?

logfile=file(r'test.txt','w')

^^^

You've opened the file in write mode. To read from the file,
you'll have to reopen it in read mode ("r").

Also, if the file you're dealing with really is a log file,
you probably want don't want to open it in write mode for
writing information either, since that will truncate the
file and lose previously logged information. Try append mode
("a") instead.

Cheers,
Aldo
--
Aldo Cortesi
al**@nullcube.com
http://www.nullcube.com
Off: (02) 9283 1131
Mob: 0419 492 863
Jul 18 '05 #2

P: n/a
I tried
logfile=file(r'test.txt','w+')
logfile.write('datetime')
test=logfile.readlines()
print test

I got :
Open an encoded file using the given mode and return
a wrapped version providing transparent encoding/decoding.

Note: The wrapped version will only accept the object format
defined by the codecs, i.e. Unicode objects for most builtin
codecs. Output is also codec dependent and will usually by
Unicode as well.

Files are always opened in binary mode, even if no binary mode
was specified. This is done to avoid data loss due to encodings
using 8-bit values. The default file mode is 'rb' meaning to
open the file in binary read mode.

encoding specifies the encoding which is to be used for the
file.

errors may be given to define the error handling. It defaults
to 'strict' which causes ValueErrors to be raised in case an
encoding 
and a hell lot of junk. Can anyone explain that???
AFAIK w+ was ment for opening a file for both writting and reading...

Regards,
Garry
On Thu, 6 Jan 2005 12:03:27 +0530, Vishnu <vi******@acmet.com> wrote:
logfile = file(r'test.txt','w')
logfile.write('datetime')
logfile.close() # <- close the file

logfile = file(r'test.txt','r') # <- Open the file in read mode
test=logfile.readlines()


~Vishnu.

-----Original Message-----
From: py************************************@python.org
[mailto:py************************************@pyth on.org] On Behalf Of
wo********@gmail.com
Sent: Thursday, January 06, 2005 11:53 AM
To: py*********@python.org
Subject: file.readlines() - gives me error (bad file descriptor)

Hey guys,

I can't figure this one out, why is this simple script giving me
problems?

logfile=file(r'test.txt','w')
logfile.write('datetime')
test=logfile.readlines()

When I run it I get the error message:
Traceback (most recent call last):
File "C:\Documents and Settings\Gregory\My Documents\Get New Great
Job\testfile.py", line 3, in ?
test=logfile.readlines()
IOError: [Errno 9] Bad file descriptor

I'm running Windows XP, Python 2.3.3 (#51, Dec 18 2003, 20:22:39) [MSC
v.1200 32 bit (Intel)] on win32
Any help would be greatly appricated.

Thanks,

Greg

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

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

--
Thanks and Regards,
GSS
Jul 18 '05 #3

P: n/a
logfile=file(r'test.txt','a+')
logfile.write('datetime')
logfile.flush()
test=logfile.readlines()
print test

I added logfile.flush(), the 'datetime' was written in the file
correctly but I couldn't get any result...

Crazy!
Garry
Jul 18 '05 #4

P: n/a
There's nothing crazy going on here. The file's current position moves
as you write into it. Both read and write operation use the same
offset. The tell() method gives you the current position at any time.
When you append to a file the position moves to the end of the file so
that the next write happens at the end. You normally wouldn't read
from the file that you are writing into. To read from the beginning,
change the position with seek. Here's how you do it:
logfile=file(r'test.txt','a+')
logfile.write('datetime')
logfile.flush()
test=logfile.readlines()
print test [] logfile.tell() 8L logfile.seek(0,0)
test=logfile.readlines()
print test
['datetime']
On Thu, 6 Jan 2005 12:30:03 +0530, Gurpreet Sachdeva
<gu***************@gmail.com> wrote: logfile=file(r'test.txt','a+')
logfile.write('datetime')
logfile.flush()
test=logfile.readlines()
print test

I added logfile.flush(), the 'datetime' was written in the file
correctly but I couldn't get any result...

Crazy!
Garry
--
http://mail.python.org/mailman/listinfo/python-list

Jul 18 '05 #5

P: n/a
On Thu, 6 Jan 2005 12:55:22 +0530, Binu K S <bi*********@gmail.com> wrote:
The file's current position moves as you write into it. I concure and have figured out the solution BUT while reading from the
file from the position where the file handler is, should return
"Null/Blank/Anything in this world" BUT should not write into the
file...
The information written was that in the Buffer of the handler... Does
that mean reading a file will actually release the buffer by throwing
the contents in the file???

Please Comment...
You normally wouldn't read from the file that you are writing into.


May be applicable in handling logs...

Regards,
Garry
Jul 18 '05 #6

P: n/a
On Thu, 6 Jan 2005 13:17:11 +0530, Gurpreet Sachdeva
<gu***************@gmail.com> wrote:
On Thu, 6 Jan 2005 12:55:22 +0530, Binu K S <bi*********@gmail.com> wrote:
The file's current position moves as you write into it. I concure and have figured out the solution BUT while reading from the
file from the position where the file handler is, should return
"Null/Blank/Anything in this world" BUT should not write into the
file...
The information written was that in the Buffer of the handler... Does
that mean reading a file will actually release the buffer by throwing
the contents in the file???

I'm sorry, I didn't get what you trying to say here. Where do you see
a read altering the file? An example might help.
Please Comment...
You normally wouldn't read from the file that you are writing into.

May be applicable in handling logs...


Sometimes after opening a file you read the contents of a file and
then append to it. I haven't seen writing to a file and then going
back to see what was written.

Regards,
Garry

Jul 18 '05 #7

P: n/a
On Thu, 6 Jan 2005 14:27:40 +0530, Binu K S <bi*********@gmail.com> wrote:
I'm sorry, I didn't get what you trying to say here. Where do you see
a read altering the file? An example might help.


Please try:

logfile=file(r'test.txt','w+')
logfile.write('datetime')

Check the contents of test.txt, you will get what ever was required...

Now Run:

logfile=file(r'test.txt','w+')
logfile.write('datetime')
logfile.readlines()

and check the contents of test.txt???
My doubt is that logfile.write('datetime') will write datetime that is
universaly accepted but why all that junk is appending to that when I
add logfile.readlines()

Strange or Am I on drugs??? :o)

Please Comment...

Garry
Jul 18 '05 #8

P: n/a
http://mail.python.org/pipermail/pyt...er/007650.html
Rest assured you're not on drugs :)

On Thu, 6 Jan 2005 14:45:24 +0530, Gurpreet Sachdeva
<gu***************@gmail.com> wrote:
On Thu, 6 Jan 2005 14:27:40 +0530, Binu K S <bi*********@gmail.com> wrote:
I'm sorry, I didn't get what you trying to say here. Where do you see
a read altering the file? An example might help.


Please try:

logfile=file(r'test.txt','w+')
logfile.write('datetime')

Check the contents of test.txt, you will get what ever was required...

Now Run:

logfile=file(r'test.txt','w+')
logfile.write('datetime')
logfile.readlines()

and check the contents of test.txt???
My doubt is that logfile.write('datetime') will write datetime that is
universaly accepted but why all that junk is appending to that when I
add logfile.readlines()

Strange or Am I on drugs??? :o)

Please Comment...

Garry

Jul 18 '05 #9

P: n/a
wo********@gmail.com wrote:
Hey guys,

I can't figure this one out, why is this simple script giving me
problems?

logfile=file(r'test.txt','w')
logfile.write('datetime')
test=logfile.readlines()

When I run it I get the error message:
Traceback (most recent call last):
File "C:\Documents and Settings\Gregory\My Documents\Get New Great
Job\testfile.py", line 3, in ?
test=logfile.readlines()
IOError: [Errno 9] Bad file descriptor

I'm running Windows XP, Python 2.3.3 (#51, Dec 18 2003, 20:22:39) [MSC
v.1200 32 bit (Intel)] on win32
Any help would be greatly appricated.

Thanks,

Greg


As logfile is opened in write mode you cannot read it. You've to open it
in read mode for reading.
Greetings,
Abhijit

--
Everybody wants to go to heaven but nobody wants to die
Jul 18 '05 #10

This discussion thread is closed

Replies have been disabled for this discussion.