Brian Beck wrote:
File objects as keys sounds pretty dangerous. I'm curious why the first thought that popped into your head wasn't using the file NAMES as keys instead? Here's my go at it. (Is Google Groups nice to indentation using spaces? I can't remember.)

optionalFiles = dict.fromkeys(['areacode.11', 'build.11'], None)

# To open optionalFiles...
for fileName in optionalFiles:
    try:
        optionalFiles[fileName] = open(fileName, "r")
        print "Opened: %s" % fileName
    except IOError:
        # Values are already initialized to None.
        print "File not found: %s" % fileName

# To close optionalFiles...
for fileName, fileObject in optionalFiles.iteritems():
    if fileObject:
        fileObject.close()
        print "Closed: %s" % fileName
        # Rebinding fileObject here won't modify the dictionary,
        # so access it through the key.
        optionalFiles[fileName] = None

Brain, Thanks for your help. I never thought of it like that.

I guess in my original thinking, in the processing of the optional files I would start off each code block with something like:

if fileAreaCode:
    ...

But now I can just do:
if optionalFiles['areacode.11']:
    ...

I think I was just too much in the above mindset to think clearly about the dictionary.

Using a file object as a key!?  What was I thinking :P

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

Reply via email to