Reading text file with wierd file extension?

Lionel lionel.keene at gmail.com
Mon Feb 2 17:33:50 EST 2009


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.
>
> > 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
>
> >         ResourceFilepath = DataFilepath + ".src"
>
> >         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
>
> > Console output when invoking as "someObject = C8DataType("C:\
> > \C8Example1.slc")" :
>
> > C:\C8Example1.slc
> > C:\C8Example1.slc.src
> > [Errno 2] No such file or directory: 'C:\\C8Example1.slc.src'
> > Error opening C:\C8Example1.slc.src
>
> > Thank you
>
> > > Lionel schrieb:
>
> > > > On Feb 2, 12:10 pm, Mike Driscoll <kyoso... at gmail.com> wrote:
> > > >> On Feb 2, 1:20 pm, Lionel <lionel.ke... at gmail.com> wrote:
>
> > > >>> On Feb 2, 10:41 am, Mike Driscoll <kyoso... at gmail.com> wrote:
> > > >>>> On Feb 2, 12:36 pm, Lionel <lionel.ke... at gmail.com> wrote:
> > > >>>>> Hi Folks, Python newbie here.
> > > >>>>> I'm trying to open (for reading) a text file with the following
> > > >>>>> filenaming convension:
> > > >>>>> "MyTextFile.slc.rsc"
> > > >>>>> My code is as follows:
> > > >>>>> Filepath = "C:\\MyTextFile.slc.rsc"
> > > >>>>> FileH = open(Filepath)
> > > >>>>> The above throws an IOError exception. On a hunch I changed the
> > > >>>>> filename (only the filename) and tried again:
> > > >>>>> Filepath = "C:\\MyTextFile.txt"
> > > >>>>> FileH = open(Filepath)
> > > >>>>> The above works well. I am able to open the file and read it's
> > > >>>>> contents. I assume to read a file in text file "mode" the parameter is
> > > >>>>> scanned for a ".txt" extension, otherwise the Python runtime doesn't
> > > >>>>> know what version of "open(...)" to invoke. How do I pass the original
> > > >>>>> filename (MyTextFile.slc.rsc) and get Python to open it as a text
> > > >>>>> file? Thanks in advance everyone!
> > > >>>> The extension shouldn't matter. I tried creating a file with the same
> > > >>>> extension as yours and Python 2.5.2 opened it and read it no problem.
> > > >>>> I tried it in IDLE and with Wing on Windows XP. What are you using?
> > > >>>> What's the complete traceback?
> > > >>>> Mike- Hide quoted text -
> > > >>>> - Show quoted text -
> > > >>> Hi Mike,
> > > >>> maybe it's not a "true" text file? Opening it in Microsoft Notepad
> > > >>> gives an unformatted view of the file (text with no line wrapping,
> > > >>> just the end-of-line square box character followed by more text, end-
> > > >>> of-line character, etc). Wordpad opens it properly i.e. respects the
> > > >>> end-of-line wrapping. I'm unsure of how these files are being
> > > >>> generated, I was just given them and told they wanted to be able to
> > > >>> read them.
> > > >>> How do I collect the traceback to post it?
> > > >> The traceback should look something like this fake one:
>
> > > >> Traceback (most recent call last):
> > > >>   File "<pyshell#3>", line 1, in <module>
> > > >>     raise IOError
> > > >> IOError
>
> > > >> Just copy and paste it in your next message. The other guys are
> > > >> probably right in that it is a line ending issue, but as they and I
> > > >> have said, Python shouldn't care (and doesn't on my machine).
>
> > > >> Mike- Hide quoted text -
>
> > > >> - Show quoted text -
>
> > > > Okay, I think I see what's going on. My class takes a single parameter
> > > > when it is instantiated...the file path of the data file the user
> > > > wants to open. This is of the form "someFile.slc". In the same
> > > > directory of "someFile.slc" is a resource file that (like a file
> > > > header) contains a host of parameters associated with the data file.
> > > > The resource file is of the form "someFile.slc.rsc". So, when the user
> > > > creates an instance of my class which, it invokes the __init__ method
> > > > where I add the ".rsc" extension to the original filename/path
> > > > parameter that was passed to the class "constructor". For example:
>
> > > > Note: try-catch blocks ommitted.
>
> > > > class MyUtilityClass:
> > > >     def __init__(self, DataFilepath):
> > > >         Resourcepath  = DataFilepath + ".rsc"
> > > >         DataFileH     = open(DataFilepath)
> > > >         ResourceFileH = open(Resourcepath)
>
> > > > Invoking this from the Python shell explicitly is no problem i.e.
> > > > "TestH = open("C:\\TestResourceFile.slc.rsc") works. BUT...something
> > > > is lost when I append the ".rsc" extension to the DataFilePath
> > > > parameter as above. When the __init__ method is invoked, Python will
> > > > open the data file but generates the exception with the "open
> > > > (Resourcepath)" instruction. I think it is somehow related to the
> > > > backslashes but I'm not entirely sure of this. Any ideas?
>
> > > This is written very slowly, so you can read it better:
>
> > > Please post the traceback.
>
> > > Diez- Hide quoted text -
>
> > > - Show quoted text -
>
> Well, if I understand your code correctly, you pass in a filename that
> exists, then you append an extension to it and expect that to change
> the file's name. This doesn't work, as you only changed the string,
> not the filename in the file system itself. You can probably use
> os.rename() to do it. Then it should be able to open it.
>
> Mike- Hide quoted text -
>
> - Show quoted text -

Hello Mike,

I'm sorry, I'm not making myself clear. I have two files in my root
directory: "C8Example1.slc" and "C8Example1.slc.rsc". (They are just
in the root directory for testing for the time being). The ".slc" file
contains the data and the ".slc.rsc" file contains the info necessary
to extract it (datatype, width, height, etc). I know a priori that the
header file will always be in the same directory and have the same
name as the data file with the exception that it will have ".rsc"
appended to its name. Therefore, when the user passes the data file
name and path as a string to the class, I check the parameter by
seeing if I can read to that filepath. If so, I simply add ".rsc" to
the end of the parameter string and try to read to that new filepath/
name in order to acquire the header information. This works when
typing it directly into the shell script (see above), but not when
coded in my class.

The IOError is printed above, but being a newbie I'm unsure of how to
see the traceback. I've only been using these tools for a couple of
days.



More information about the Python-list mailing list