首页 > 解决方案 > 在python中循环错误的行数

问题描述

我创建了一个脚本,但脚本上的循环没有得到尊重。出于某种原因,它返回了更多应该返回的行(只有 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)

标签: pythonpython-3.xloopsappend

解决方案


你的代码是正确的。你只需要取消缩进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)

推荐阅读