Чтение / запись текстовых файлов в Python - PullRequest
0 голосов
/ 06 октября 2011

Я довольно новичок в Python и не до конца понимаю все элементы, и мне дали основание для программы, и мне нужно изменить биты, вот что у меня есть:

    import sys, os

    filename   = 'C:\main\in.txt'
    resultFile = 'C:\main\out.txt'

    try:
       file = open( filename, "w" )
    except Exception, e:
        logger.critical( "Failed to create file \"%s\" : %s" % ( filename, e )

    for name, value in brg.iteritems():
        if -1 == string.find( name, "CTRL" ) and name not in [ "name", "type" ]:
            file.write( "%s = %s\n" % ( name, value ) )
            file.close()

   # run the Fortran programme

    resultCode = os.system( '%sC:\main\Debug\main.exe -i %s -o %s.result' % ( options[ OPTION_script_path ], filename, filename ) ) 

    # Read the results

    try:
        file = open( resultFile, "r" ) 
    except Exception, e:
        logger.critical( "Failed to create file \"%s\" : %s" % ( resultFile, e ) 

        regexp = re.compile( "^(?P<name>.*)\\s*=\\s*(?P<value>.*)$" )
        for row in file.xreadlines():
        row = row.strip( "\\r\\n \\t" )
        m = regexp.match( row )
        if m:
                name = m.group( "name" )
                value = m.group( "value" )
                brg[ name ] = value

Я полностью растерялся из-за того, почему он в настоящее время не работает, так как он находит синтаксическую ошибку с: для имени, значения в Bear.iteritems ():

Я не уверен, что некоторые ошибки вызванык отступу ..

Я тоже не совсем понимаю последнюю часть.У меня есть выходной текстовый файл, и это то, что читает последняя часть.Я, однако, не понимаю (в частности) эту строку:

regexp = re.compile( "^(?P<name>.*)\\s*=\\s*(?P<value>.*)$" )

С RE, я не понимаю точно, что означает «сопоставление», что такое сопоставление ^, $ и? Pк чему?Также, что представляет собой 'regexp'?

Спасибо за ваше время =)

1 Ответ

3 голосов
/ 06 октября 2011
        logger.critical( "Failed to create file \"%s\" : %s" % ( filename, e )

Имеет 2 слева ( и только 1 справа ). Это похоже на синтаксическую ошибку.

Поскольку утверждение не завершено, Python продолжает синтаксический анализ. Сообщение об ошибке отображается в следующей строке.


Прочитайте это: http://docs.python.org/library/re.html#regular-expression-syntax. Затем обновите ваш вопрос с более конкретными аспектами регулярного выражения, которые вас смущают. Регулярные выражения - это (потенциально) глубокая тема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...