代码之家  ›  专栏  ›  技术社区  ›  krock1516

python如果定义了函数,那么将变量输出写入文件的方式是什么?

  •  0
  • krock1516  · 技术社区  · 7 年前

    在定义函数的情况下,如何编写变量数据信息。 当我尝试下面的方法时,它只写了几行:

    请告诉我我在这里犯了什么错误…

    fileData = 'ldap_conn_logs'
    def ChkCon():
        Flag    = False
        FlagTcp = False
        NewStr  = ''
        OutStr  = ''
        HOST    = ''
        MARKER  = '----------------'
        NEWLINE = '\n'
        with open('ldap_bind_netstat', 'r') as log:
            for line in log:
                if '| SUCCESS |' in line:
                    if Flag:
                        return HOST
                        return MARKER
                        return NewStr
                if '| SUCCESS |' in line:
                    Flag = False
                    FlagTcp = True
                    HOST = line.split()[0]
                    NewStr = ''
                elif 'FAILED' in line:
                    FlagTcp = False
                elif 'UNREACHABLE' in line:
                    FlagTcp = False
                if FlagTcp and line.startswith('tcp'):
                    NewStr += line
                    if 'tsdj-lb-oidc01' not in line:
                        Flag = True
                    OutStr = HOST + NEWLINE + MARKER + NEWLINE + NewStr
                    fileWrite = open(fileData, mode='a', encoding='utf-8')
                    fileWrite.write(OutStr)
                    fileWrite.close()
    ChkCon()
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   Hans Musgrave    7 年前

    正如Vinny提到的,这个例子既不完整也不可验证。我的最佳猜测是你想替换 mode='w+' 具有 mode='a' . 你好像没有在读 fileData ,所以不要为 + . 每次运行循环时,写入模式都会覆盖文件。

        2
  •  0
  •   krock1516    7 年前

    @调理灵魂,使用 str.format 方法并关闭 fileWrite.close() 在for循环之外。请在下面试试,它应该管用。

    def ChkCon():
        Flag    = False
        FlagTcp = False
        NewStr  = ''
        OutStr  = ''
        HOST    = ''
        MARKER  = '----------------'
        NEWLINE = '\n'
        fileData = 'ldap_conn_logs'
        with open('ldap_bind_netstat', 'r') as log:
            for line in log:
                if '| SUCCESS |' in line:
                    if Flag:
                        return HOST
                        return MARKER
                        return NewStr
                if '| SUCCESS |' in line:
                    Flag = False
                    FlagTcp = True
                    HOST = line.split()[0]
                    NewStr = ''
                elif 'FAILED' in line:
                    FlagTcp = False
                elif 'UNREACHABLE' in line:
                    FlagTcp = False
                if FlagTcp and line.startswith('tcp'):
                    NewStr += line
                    if 'tsdj-lb-oidc01' not in line:
                        Flag = True
                    OutStr = HOST + NEWLINE + MARKER + NEWLINE + NewStr
                    fileWrite = open(fileData, 'w')
                    fileWrite.write(OutStr)
                    file.write('{0}'.format(OutStr))
            fileWrite.close()
            log.close()
    ChkCon()