首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python - Write for循环输出到文件

Python - Write for循环输出到文件
EN

Stack Overflow用户
提问于 2017-04-01 02:51:05
回答 4查看 12.3K关注 0票数 1

我有一个输出IP列表的函数。

代码语言:javascript
复制
def convertHostNamesToIps(hostnames):
    ip = server.system.search.hostname(sessionKey, hostnames )
    for ips in ip:
        print (ips.get('ip'))

输出通常如下所示: CSDP_LAB_STAGING的IP地址

代码语言:javascript
复制
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

现在我想把这个输出写到文件中。

我所做的是

代码语言:javascript
复制
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脚本,如果我做了一些非常愚蠢的事情,请原谅我。

EN

回答 4

Stack Overflow用户

发布于 2017-04-01 02:59:42

重新分配sys.stdout?那是..。勇敢的。

您可以将打开的文件赋给其他变量,然后调用它的write方法。如果您想在单独的行中添加内容,则必须自己添加这些内容。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2017-04-01 03:31:35

我查看了上面每个人的回复,并尝试了每一个。但每一个解决方案都会导致只将最后一个IP打印到文件中。阅读documentation让我得出结论,我需要附加到文件中,而不是写入到文件中。

代码语言:javascript
复制
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() 
票数 1
EN

Stack Overflow用户

发布于 2017-04-01 03:00:43

我甚至不知道最后一个IP是如何保存的,因为您的函数中没有任何write。您可以尝试这样做:

代码语言:javascript
复制
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函数

编辑(我不能评论)这两种方法的区别:

代码语言:javascript
复制
my_file = open ('test.txt', 'w')

代码语言:javascript
复制
my_file = open ('test.txt', 'a')

只是在第一个文件中,在执行该函数调用之前文件中的所有内容都将被删除。使用append,它不会,并且my_file.write(something_to_add)将被添加到文件的末尾。但在'w'模式下打开将在执行此精确行时擦除文件,只有我自己测试过,这适用于'w‘和'a’。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43147732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档