Python Что такое способ записи вывода переменной в файл, если определена функция - PullRequest
0 голосов
/ 27 мая 2018

Как записать переменные данные в файл, если определена функция.Хотя я пытаюсь описать метод ниже, но он только напишет несколько строк:

Пожалуйста, дайте мне знать, какую ошибку я здесь делаю ...

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 ]

0 голосов
/ 29 мая 2018

@ reculseSoul, используйте метод 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()
0 голосов
/ 27 мая 2018

Как упоминал Винни, этот пример не является ни полным, ни проверяемым.Мое лучшее предположение, что вы хотите заменить mode='w+' на mode='a'.Похоже, вы на самом деле не читаете fileData, так что не беспокойтесь о +.Режим записи перезаписывает ваш файл каждый раз, когда вы запускаете цикл.

...