我有一个输出IP列表的函数。
def convertHostNamesToIps(hostnames):
ip = server.system.search.hostname(sessionKey, hostnames )
for ips in ip:
print (ips.get('ip'))输出通常如下所示: CSDP_LAB_STAGING的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脚本,如果我做了一些非常愚蠢的事情,请原谅我。
发布于 2017-04-01 02:59:42
重新分配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()发布于 2017-04-01 03:31:35
我查看了上面每个人的回复,并尝试了每一个。但每一个解决方案都会导致只将最后一个IP打印到文件中。阅读documentation让我得出结论,我需要附加到文件中,而不是写入到文件中。
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() 发布于 2017-04-01 03:00:43
我甚至不知道最后一个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 ()这样的东西来保存你的ips。我将所有的ips放在一个字符串中,以便它们更容易保存在文件中。with块不需要任何close函数
编辑(我不能评论)这两种方法的区别:
my_file = open ('test.txt', 'w')和
my_file = open ('test.txt', 'a')只是在第一个文件中,在执行该函数调用之前文件中的所有内容都将被删除。使用append,它不会,并且my_file.write(something_to_add)将被添加到文件的末尾。但在'w'模式下打开将在执行此精确行时擦除文件,只有我自己测试过,这适用于'w‘和'a’。
https://stackoverflow.com/questions/43147732
复制相似问题