Python-将循环输出写入文件

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

我有一个输出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
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。但无法从你的问题中推断出来。