Python 如果定义了函数,将变量输出写入文件的方法是什么
Python What is way of Writing a Variable output into a file if a function defined
如果定义了函数,如何将变量数据信息写入文件。
虽然我正在尝试下面的方法,但它只写了几行:
请让我知道我在这里犯了什么错误...
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()
正如 Vinny 所提到的,这个例子既不完整也无法验证。我最好的猜测是您想用 mode='a'
替换 mode='w+'
。您似乎并没有真正阅读 fileData
,所以不要理会 +
。每次您 运行 通过循环时,写入模式都会覆盖您的文件。
@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()
如果定义了函数,如何将变量数据信息写入文件。 虽然我正在尝试下面的方法,但它只写了几行:
请让我知道我在这里犯了什么错误...
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()
正如 Vinny 所提到的,这个例子既不完整也无法验证。我最好的猜测是您想用 mode='a'
替换 mode='w+'
。您似乎并没有真正阅读 fileData
,所以不要理会 +
。每次您 运行 通过循环时,写入模式都会覆盖您的文件。
@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()