Reading text file with wierd file extension?

john gnujohn at gmail.com
Tue Feb 3 01:49:53 EST 2009


On Feb 2, 7:57 pm, Mike Driscoll <kyoso... at gmail.com> wrote:
> On Feb 2, 8:08 pm, Lionel <lionel.ke... at gmail.com> wrote:
>
>
>
> > On Feb 2, 5:40 pm, "Rhodri James" <rho... at wildebst.demon.co.uk> wrote:
>
> > > [Quoting restored for reduced
>
> > > On Mon, 02 Feb 2009 22:33:50 -0000, Lionel <lionel.ke... at gmail.com> wrote:
> > > > On Feb 2, 2:01 pm, Mike Driscoll <kyoso... at gmail.com> wrote:
> > > >> On Feb 2, 3:43 pm, Lionel <lionel.ke... at gmail.com> wrote:
> > > >> > On Feb 2, 1:07 pm, "Diez B. Roggisch" <de... at nospam.web.de> wrote:
>
> > > >> >> This is written very slowly, so you can read it better:
>
> > > >> > Please post without sarcasm.
>
> > > On Usenet?  You'll be wanting single unequivocal answers next!
>
> > > Seriously though, you had been asked several times for the traceback,
> > > so that we could stop guessing and tell you for sure what was going
> > > on, and you hadn't provided it.  Diez's mild sarcasm was not uncalled-
> > > for.  The fact that you didn't have a traceback partially excuses you,
> > > but it would have helped if you'd said so.
>
> > > >> > This is the output from my Python shell:
>
> > > >> > >>> DatafilePath = "C:\\C8Example1.slc"
> > > >> > >>> ResourcefilePath = DatafilePath + ".rsc"
> > > >> > >>> DatafileFH = open(DatafilePath)
> > > >> > >>> ResourceFh = open(ResourcefilePath)
> > > >> > >>> DatafilePath
>
> > > >> > 'C:\\C8Example1.slc'>>> ResourcefilePath
>
> > > >> > 'C:\\C8Example1.slc.rsc'
>
> > > >> > It seems to run without trouble. However, here is the offending code
> > > >> > in my class (followed by console output):
>
> > > >> > class C8DataType:
>
> > > >> >     def __init__(self, DataFilepath):
>
> > > >> >         try:
> > > >> >             DataFH = open(DataFilepath, "rb")
>
> > > >> >         except IOError, message:
> > > >> >             # Error opening file.
> > > >> >             print(message)
> > > >> >             return None
>
> > > You're catching the IOError, presumably so that you can fail
> > > gracefully elsewhere.  This may not be a particularly good
> > > idea, and in any case it stops the exception reaching the
> > > console where it would cause the traceback to be displayed.
> > > More on this later.
>
> > > >> >         ResourceFilepath = DataFilepath + ".src"
>
> > > As other people have pointed out, you've got a typo here.
>
> > > >> >         print(DataFilepath)
> > > >> >         print(ResourceFilepath)
>
> > > >> >         # Try to open resource file, catch exception:
> > > >> >         try:
> > > >> >             ResourceFH = open(ResourceFilepath)
>
> > > >> >         except IOError, message:
> > > >> >             # Error opening file.
> > > >> >             print(message)
> > > >> >             print("Error opening " + ResourceFilepath)
> > > >> >             DataFH.close()
> > > >> >             return None
>
> > > [Huge amounts of text trimmed]
>
> > > Fair enough, you're catching the IOError so that you can
> > > ensure that DataFH is closed.  Unfortunately this concealed
> > > the traceback information, which would have made it more
> > > obvious to you what people were talking about.  Given that
> > > this has rather stuffed your C8DataType instance, you
> > > might want to think about re-raising the exception after
> > > you've closed DataFH and letting the outer layers deal
> > > with it in a more appropriate fashion.
>
> > > Incidentally, this code isn't going to do anything useful
> > > for you anyway even after you've fixed the typo.  DataFH
> > > and ResourceFH are both local variables to __init__ and
> > > will be tossed away when it finishes executing.  If you
> > > want to use them later, make them self.data_fh and
> > > self.resource_fh respectively.
>
> > > (PEP 8 recommends that you use lower_case_with_underscores
> > > for variable or attribute names, and leave MixedCase for
> > > class names.)
>
> > > --
> > > Rhodri James *-* Wildebeeste Herder to the Masses- Hide quoted text -
>
> > > - Show quoted text -
>
> > Very good comments. I'll be implementing some of your suggestions, to
> > be sure. Thanks Rhodri.
>
> You could check to see if the file actually exists using os.path.exists
> (). I've found that if I use that in combination with printing the
> path variable, I sometimes discover that either my file doesn't exist
> or that my path is slightly wrong and thus Python doesn't think my
> file exists...
>
> Mike

It's weird, right?  But thanks to Grant and Rhodri, from another
newbie (me)
and to everyone else who helps us out.

John  (the "how to ask questions" text is priceless)



More information about the Python-list mailing list