【问题标题】:Loop with wrong number of lines in python [closed]在python中循环错误的行数[关闭]
【发布时间】:2021-03-04 10:54:31
【问题描述】:

我创建了一个脚本,但脚本上的循环没有得到尊重。出于某种原因,它返回了更多应该返回的行(只有 3 行才是正确的返回)。

sample.txt 文件内容如下:

Server1
Server2
Server3

在我的代码中,它应该只使用 sample.txt 中的 3 个服务器进行附加,但是,我得到的输出是:

[{'ApplicationName': 'App01', 'ServerList': ['server1'], 'StartDate': '2020-12-12 12:00:00', 'EndDate': '2020-12-12 13:00:00', 'SourceTool': 'Moon'}]
[{'ApplicationName': 'App01', 'ServerList': ['server1'], 'StartDate': '2020-12-12 12:00:00', 'EndDate': '2020-12-12 13:00:00', 'SourceTool': 'Moon'}, {'ApplicationName': 'App01', 'ServerList': ['server2'], 'StartDate': '2020-12-12 12:00:00', 'EndDate': '2020-12-12 13:00:00', 'SourceTool': 'Moon'}]
[{'ApplicationName': 'App01', 'ServerList': ['server1'], 'StartDate': '2020-12-12 12:00:00', 'EndDate': '2020-12-12 13:00:00', 'SourceTool': 'Moon'}, {'ApplicationName': 'App01', 'ServerList': ['server2'], 'StartDate': '2020-12-12 12:00:00', 'EndDate': '2020-12-12 13:00:00', 'SourceTool': 'Moon'}, {'ApplicationName': 'App01', 'ServerList': ['server3'], 'StartDate': '2020-12-12 12:00:00', 'EndDate': '2020-12-12 13:00:00', 'SourceTool': 'Moon'}]

以下是正确的输出方式:

[{'ApplicationName': 'App01', 'ServerList': ['server1'], 'StartDate': '2020-12-12 12:00:00', 'EndDate': '2020-12-12 13:00:00', 'SourceTool': 'Moon'}, 
    {'ApplicationName': 'App01', 'ServerList': ['server2'], 'StartDate': '2020-12-12 12:00:00', 'EndDate': '2020-12-12 13:00:00', 'SourceTool': 'Moon'}, 
    {'ApplicationName': 'App01', 'ServerList': ['server3'], 'StartDate': '2020-12-12 12:00:00', 'EndDate': '2020-12-12 13:00:00', 'SourceTool': 'Moon'}]

我做错了什么?下面是我正在使用的脚本:

list = []

with open('sample.txt') as f:
    lines = [line.rstrip() for line in f]

for x in lines:
    data = {
        "ApplicationName" : 'App01',
        "ServerList" : [x], 
        "StartDate" : '2020-12-12 12:00:00',
        "EndDate" : '2020-12-12 13:00:00',
        "SourceTool" : 'Moon'
        }
    list.append(data)
    print(list)

【问题讨论】:

  • 这是因为您的 print(list) 语句在 for 循环内。如果你将它与 for 对齐,它应该会正确显示
  • 我认为您的代码没有任何问题。您只需要在 for 循环之外打印列表。

标签: python python-3.x loops append


【解决方案1】:

您的代码是正确的。您只需取消缩进print(list) 即可。目前,print 语句位于for 循环内。

这里是固定代码:

list = []

with open('sample.txt') as f:
    lines = [line.rstrip() for line in f]

for x in lines:
    data = {
        "ApplicationName" : 'App01',
        "ServerList" : [x], 
        "StartDate" : '2020-12-12 12:00:00',
        "EndDate" : '2020-12-12 13:00:00',
        "SourceTool" : 'Moon'
        }
    list.append(data)

print(list)

【讨论】:

    【解决方案2】:

    我觉得你很好。但是在循环完成后尝试打印;取消缩进打印一次。

    【讨论】:

    • 天哪,我不敢相信只有这个细节......谢谢你们,它现在正在工作。干杯
    猜你喜欢
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 2022-10-30
    • 2015-09-06
    • 2020-09-03
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    相关资源
    最近更新 更多