我有一个输出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
。我以为我可能会搞砸那个缩进,但是那个怨恨帮助了我。还有其他我想念的东西吗?
P.S。这是我的第一个python脚本,请原谅我,如果我做了一些非常愚蠢的事情。
答案 0 :(得分:0)
重新分配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()
答案 1 :(得分:0)
我甚至不知道最后的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'
答案 2 :(得分:0)
我经历了每个人的反应,并尝试了每一个。但是每个解决方案都只导致最后一个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()
答案 3 :(得分:0)
def convertHostNamesToIps(hostnames):
ip = server.system.search.hostname(sessionKey, hostnames )
iplist = [] # Make a temporal list.
for ips in ip:
print (ips.get('ip')) # This only print your ips, it isn't necesary.
iplist.append(ips.get('ip')) # Add the current ip in the list.
with open("test.txt","w") as txt: # Open the file but when you finish to use the file it will automatically close.
txt.writelines(iplist)
我希望这会对你有所帮助。