Oltmans a écrit :
Here is the scenario:

It's a command line program. I ask user for a input string. Based on
that input string I retrieve text from a text file. My text file looks
like following

Text-file:
-------------
AbcManager=C:\source\code\Modules\Code-AbcManager\
AbcTest=C:\source\code\Modules\Code-AbcTest\
DecConnector=C:\source\code\Modules\Code-DecConnector\
GHIManager=C:\source\code\Modules\Code-GHIManager\
JKLConnector=C:\source\code\Modules\Code-JKLConnector

-------------

So now if I run the program and user enters

DecConnector

Then I'm supposed to show them this text "C:\source\code\Modules\Code-
DecConnector" from the text-file. Right now I'm retrieving using the
following code which seems quite ineffecient and inelegant at the same
time

with open('MyTextFile.txt')

This will lookup for MyFile.txt in the system's current working directory - which is not necessarily in the script's directory.

 as file:

this shadows the builtin's 'file' symbol.

                for line in file:

                    if mName in line: #mName is the string that
contains user input


                        Path =str(line).strip('\n')

'line' is already a string.

                        tempStr=Path

                        Path=tempStr.replace(mName+'=',"",1)

You don't need the temporary variable here. Also, you may want to use str.split instead:


# NB : renaming for conformity to
# Python's official naming conventions

# 'name' => what the user looks for
# 'path_to_file' => fully qualified path to the 'database' file

target = "%s=" % name # what we are really looking for

with open(path_to_file) as the_file:
    for line in the_file:
        # special bonus : handles empty lines and 'comment' lines
        # feel free to comment out the thre following lines if
        # you're sure you don't need them !-)
        line = line.strip()
        if not line or line.startswith('#') or line.startswith(';'):
            continue

        # faster and simpler than a regexp
        if line.startswith(target):
            # since the '=' is in target, we can safely assume
            # that line.split('=') will return at least a
            # 2-elements list
            path = line.split('=')[1]
            # no need to look further
            break
    else:
        # target not found...
        path = None



I was wondering if using RegEx will make this look better.

I don't think so. Really.
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to