在Python中读写文本文件

0 投票
1 回答
1163 浏览
提问于 2025-04-17 03:48

我刚开始学习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

我完全搞不懂为什么它现在不工作,因为在这行代码:for name, value in bearing.iteritems(),出现了语法错误。

我不确定是不是因为缩进的问题导致的错误……

我也不太明白最后的部分。我有一个输出的文本文件,这部分代码是用来读取的。不过我特别不理解这一行:

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

关于正则表达式(RE),我不太明白“匹配”到底是什么意思,^、$和?P分别是匹配什么的?另外,'regexp'代表什么呢?

谢谢你的帮助 =)

1 个回答

3
        logger.critical( "Failed to create file \"%s\" : %s" % ( filename, e )

这里有两个左括号 ( 和一个右括号 )。这看起来像是语法错误。

因为这个语句没有写完整,Python 会继续解析代码。错误信息会出现在下一行。


你可以看看这个链接:http://docs.python.org/library/re.html#regular-expression-syntax。然后请更新你的问题,具体说明你对正则表达式哪些地方感到困惑。正则表达式是一个(可能很复杂的)主题。

撰写回答