Python-将循环输出写入文件
我有一个输出IP列表的函数Python-将循环输出写入文件,python,Python,我有一个输出IP列表的函数 def convertHostNamesToIps(hostnames): ip = server.system.search.hostname(sessionKey, hostnames ) for ips in ip: print (ips.get('ip')) 输出通常如下所示 以下是CSDP_实验室_分段的IP 172.29.219.123 172.29.225.5 172.29.240.174 172.29.225.46 1
def convertHostNamesToIps(hostnames):
ip = server.system.search.hostname(sessionKey, hostnames )
for ips in ip:
print (ips.get('ip'))
输出通常如下所示
以下是CSDP_实验室_分段的IP
172.29.219.123
172.29.225.5
172.29.240.174
172.29.225.46
172.29.240.171
172.29.240.175
172.29.219.119
172.29.219.117
172.29.219.33
172.29.219.35
.
.
.
172.29.219.40
172.29.219.35
172.29.219.40
172.29.219.118
172.29.219.121
172.29.219.115
172.29.225.51
现在我想把这个输出写入文件
我所做的是
def convertHostNamesToIps(hostnames):
ip = server.system.search.hostname(sessionKey, hostnames )
sys.stdout=open("test.txt","w")
for ips in ip:
print (ips.get('ip'))
sys.stdout.close()
但是上面的代码只将最后一个IP写入test.txt
。我想我可能弄乱了压痕,但这对我没有帮助。我还缺什么吗
另外,这是我第一次使用python脚本,如果我做了一些非常愚蠢的事情,请原谅。重新分配
sys.stdout
?那是。。。勇敢
您可以将打开的文件分配给其他变量,然后调用其write
方法。如果你想在单独的行中添加内容,你必须自己添加这些内容
def convertHostNamesToIps(hostnames):
ip = server.system.search.hostname(sessionKey, hostnames )
my_file=open("test.txt","w")
for ips in ip:
my_file.write(ips.get('ip')+'\n')
my_file.close()
重新分配系统标准?那是。。。勇敢 您可以将打开的文件分配给其他变量,然后调用其
write
方法。如果你想在单独的行中添加内容,你必须自己添加这些内容
def convertHostNamesToIps(hostnames):
ip = server.system.search.hostname(sessionKey, hostnames )
my_file=open("test.txt","w")
for ips in ip:
my_file.write(ips.get('ip')+'\n')
my_file.close()
我甚至不知道最后一个IP是如何保存的,因为您的函数中没有任何
write
。
您可以尝试以下方法:
def convertHostNamesToIps(hostnames):
ip = server.system.search.hostname(sessionKey, hostnames )
list_ips = str ()
for ips in ip:
list_ips = list_ips + ips.get('ip') + '\n'
with open ('test.txt', 'w') as file:
file.write (list_ips)
您需要类似于file.write()
的东西来保存IP。我将所有IP放在一个字符串中,以便更容易保存在文件中。
with
块不需要任何close
功能
编辑(我无法评论)
这两种方法之间的区别:
my_file = open ('test.txt', 'w')
及
只是在第一个函数中,在执行该函数调用之前文件中的所有内容都将被删除。使用append时,它不会,并且my\u file.write(something\u to\u add
)将添加到文件的末尾。
但是,在'w'
模式下打开将仅在执行此精确行时擦除文件
我对自己进行了测试,这对“w”和“a”都有效,我甚至不知道最后一个IP是如何保存的,因为您的函数中没有任何
写入。
您可以尝试以下方法:
def convertHostNamesToIps(hostnames):
ip = server.system.search.hostname(sessionKey, hostnames )
list_ips = str ()
for ips in ip:
list_ips = list_ips + ips.get('ip') + '\n'
with open ('test.txt', 'w') as file:
file.write (list_ips)
您需要类似于file.write()
的东西来保存IP。我将所有IP放在一个字符串中,以便更容易保存在文件中。
with
块不需要任何close
功能
编辑(我无法评论)
这两种方法之间的区别:
my_file = open ('test.txt', 'w')
及
只是在第一个函数中,在执行该函数调用之前文件中的所有内容都将被删除。使用append时,它不会,并且my\u file.write(something\u to\u add
)将添加到文件的末尾。
但是,在'w'
模式下打开将仅在执行此精确行时擦除文件
我测试了自己,这对“w”和“a”都有效。我检查了上面每个人的回答,并尝试了每个回答。但每个解决方案都只会导致最后一个IP被打印到文件中。通过阅读,我得出这样的结论:我需要附加到文件中,而不是写入到文件中
def convertHostNamesToIps(hostnames):
ip = server.system.search.hostname(sessionKey, hostnames )
my_file=open("test.txt","a")
for ips in ip:
my_file.write(ips.get('ip')+'\n')
my_file.close()
我检查了上面每个人的回答,并逐一尝试。但每个解决方案都只会导致最后一个IP被打印到文件中。通过阅读,我得出这样的结论:我需要附加到文件中,而不是写入到文件中
def convertHostNamesToIps(hostnames):
ip = server.system.search.hostname(sessionKey, hostnames )
my_file=open("test.txt","a")
for ips in ip:
my_file.write(ips.get('ip')+'\n')
my_file.close()
我希望这对你有帮助
我希望这会对您有所帮助。这太复杂了。请阅读Python文档中关于open
函数和文件对象的一般说明(特别是write
方法)。这应该通过open
自行完成。但是,如果您想忽略所有警告,其他人会因为您直接使用sys.stdout而给您发出警告。。。。。只需将sys.stdout.flush()
放在sys.stdout.close()
的正上方,这太复杂了。请阅读Python文档中关于open
函数和文件对象的一般说明(特别是write
方法)。这应该通过open
自行完成。但是,如果您想忽略所有警告,其他人会因为您直接使用sys.stdout而给您发出警告。。。。。只需将sys.stdout.flush()
放在sys.stdout.close()
的正上方,这意味着您的函数会被重复调用,最后一次调用中的IP列表只包含一个IP。但是无法从你的问题中推断出来,这意味着你的函数会被反复调用,而上一次调用中的IP列表只包含一个IP。但无法从你的问题中推断出来。