Reading text file with wierd file extension?

Diez B. Roggisch deets at nospam.web.de
Mon Feb 2 16:07:23 EST 2009


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



More information about the Python-list mailing list