我如何阅读文件的每一行并将其附加到python中的json文件?

问题描述 投票:0回答:1

[我一直在努力寻找一种以json形式存储代理数据的方法,我知道更简单的方法是从文本框中获取每个代理并将其保存到文件中,然后再访问它,从文件中加载信息,但我想拥有可与不同类型IP配合使用的组。比如说一个小组使用某个提供商的代理IP,而另一个小组则使用另一个提供商的IP,我需要将IP存储在他们尊敬的组中,这就是为什么我认为我需要创建一个json文件来存储每个代理位于其自己的json数组中。我遇到的麻烦是将IP添加到json数组中,因为我试图遍历其中包含IP的传输文件,然后将其添加到json数组中。到目前为止,我尝试过此,

def save_proxy():
    proxy = pooled_data_default.get('1.0', 'end-2c')
    transfer_file = open('proxies.txt', 'w')
    transfer_file.write(proxy)
    transfer_file.close()
    transfer_file1 = open('proxies.txt', 'r')

    try:
        with open('proxy_groups.txt', 'r+') as file:
            proxy_group = json.load(file)
    except:
        proxy_group = []
    total = []
    for line in transfer_file1:
        line = transfer_file1.readline().strip()
        total.append(line)
    proxy_group.append({
        'group_name': pool_info.get(),
        'proxy': [{
            'proxy': total,
        }]
    }),
    with open('proxy_groups.txt', 'w') as outfile:
        json.dump(proxy_group, outfile, indent=4)

这不起作用,但这是我尝试从文件中获取每一行并将其动态添加到json数组中的尝试。任何帮助表示赞赏。

编辑:这是正在输出的内容:

[
    {
        "group_name": "Defualt",
        "proxy": [
            {
                "proxy": [
                    "asdf",
                    ""
                ]
            }
        ]
    }
]

这是输入

wdsa
asdf
sfs

[似乎只选择3个中间的一个。我认为可以打印它们的列表,但是仍然打印中间的一个,最后打印一个空格。

我的数据的一个例子是输入文本框可能是

wkenwwins:1000:username:password

uwhsuh:1000:username:password

2ewswsd:1000:username:password

gfrfccv:1000:username:password

我可能要将其保存到的选定组可以称为“默认”。我选择默认,然后单击“保存”,将这些输入添加到名为“ proxies.txt”的单独的txt表中。然后从文本表中,我想遍历每行并将每行追加到json数据。它没有做,这是我希望它看起来像在json数据中

[
    {
        "group_name": "Defualt",
        "proxy": [
            {
                "proxy": [
                    'ewswsd:1000:username:password',
                    'wkenwwins:1000:username:password',
'uwhsuh:1000:username:password'
                ]
            }
        ]
    }
]

然后说,如果我分成两组,则json数据txt文件应如下所示:

[
    {
        "group_name": "Defualt",
        "proxy": [
            {
                "proxy": [
                    'ewswsd:1000:username:password',
                    'wkenwwins:1000:username:password',
                    'uwhsuh:1000:username:password'
                ]
            }
        ]
    }
]
[
    {
        "group_name": "Test",
        "proxy": [
            {
                "proxy": [
                    'ewswsd:1000:username:password',
                    'wkenwwins:1000:username:password',
                    'uwhsuh:1000:username:password'
                ]
            }
        ]
    }
]

因此,我只能通过呼叫组名来访问每个组。

python json
1个回答
1
投票

您可以如下简化save_proxy()

def save_proxy():
    proxy = pooled_data_default.get('1.0', 'end-1c')
    # save the proxies to file
    with open('proxies.txt', 'w') as transfer_file:
        transfer_file.write(proxy)
    # load the proxy_groups if exists
    try:
        with open('proxy_groups.txt', 'r') as file:
            proxy_group = json.load(file)
    except:
        proxy_group = []
    proxy_group.append({
        'group_name': pool_info.get(),
        'proxy': proxy.splitlines()
    })
    with open('proxy_groups.txt', 'w') as outfile:
        json.dump(proxy_group, outfile, indent=4)

输出文件proxy_groups.txt如下所示:

[
    {
        "group_name": "default",
        "proxy": [
            "wkenwwins:1000:username:password",
            "uwhsuh:1000:username:password"
        ]
    }
]
© www.soinside.com 2019 - 2024. All rights reserved.