Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python如果定义了函数,将变量输出写入文件的方式是什么_Python_Python 3.5 - Fatal编程技术网

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

Python如果定义了函数,将变量输出写入文件的方式是什么,python,python-3.5,Python,Python 3.5,如何在定义函数的情况下将变量数据信息写入文件。 虽然我在尝试下面的方法,但它只写了几行: 请让我知道我在这里犯了什么错误 fileData = 'ldap_conn_logs' def ChkCon(): Flag = False FlagTcp = False NewStr = '' OutStr = '' HOST = '' MARKER = '----------------' NEWLINE = '\n'

如何在定义函数的情况下将变量数据信息写入文件。 虽然我在尝试下面的方法,但它只写了几行:

请让我知道我在这里犯了什么错误

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()

正如文尼所提到的,这个例子既不完整也不可验证。我的猜测是,您想用
mode='a'
替换
mode='w+'
。您似乎并没有实际读取
文件数据
,所以不要为
+
而烦恼。每次运行循环时,写入模式都会覆盖文件。

@reculseSoul,使用
str.format
方法并在for循环外部关闭
fileWrite.close()
。请尝试下面它应该工作

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()

什么是
someOutput
?在
for
循环中以“write”模式打开文件的任何位置都没有定义,这将覆盖循环每次迭代中已在文件中写入的任何文本。请按照@Hans的建议使用模式
a
@文尼。。我已尝试编辑实际代码,但在编辑过程中,它不会将实际的
outtr
数据写入file@JayJoshi .. 我错误地保留了
+w
@reculseSoul,更改模式是否解决了问题。?Hans Musgrave,我尝试编辑了真实代码,只是为了看看我做错了什么。。