如何在Python中读取文件并将内容放入json方法中?

2024-05-19 01:35:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一个包含如下内容的文件中读取数据

{"name": "Host1","type": "ipmask","subnet": ["0.0.0.0","255.255.255.255"],"dynamic_mapping": None},
{"name": "Host2","type": "ipmask","subnet": ["0.0.0.0","255.255.255.255"],"dynamic_mapping": None},

转换为python中的一个变量,以便我可以在下面的代码中使用它来处理使用JSON的post请求

with open('data.txt', 'r') as file:
    dat2 = file.read()

post2 = {
        "id": 5,
        "method": "set",
        "params": [
            {
                "data": [
                     dat2
                    ],
                "url": "/config/url"
            },
        "session": sessionkey,
        "verbose": 1
        }

我被卡住了,因为当我将数据复制并通过dat2所在的JSON时,请求成功通过。我真的不明白我做错了什么,我甚至试着去掉新行和空白。如果有人能帮忙,我将不胜感激


Tags: 文件namenonejsonurl内容datatype
3条回答

这个堆栈溢出问题有很多很好的答案:How to read a file line-by-line into a list?。 你可能会找到一个有效的

我想您想发送data.txt中每一行的请求吗?在这种情况下,简单循环将有助于读取该行,去掉“,”并发送请求:

with open('data.txt', 'r') as file:
    for line in file.readlines():
    # strip whilespace with .strip() and then delete last character in a string (,)
    dat2 = line.strip()[:-1] 

    post2 = {
        "id": 5,
        "method": "set",
        "params": [
            {
                "data": [
                     dat2
                    ],
                "url": "/config/url"
            },
        "session": sessionkey,
        "verbose": 1
        }

我可以看到一些事情可能会给你带来一些问题,所以我会先提到它们,然后建议一些调整

两件主要的事情是,首先,严格的JSON解析器会对数据文件中的None产生问题——我想知道是否存在JSON与Python数据结构的字符串输出的混合。另一个是您显示的post2结构缺少'params'元素的右方括号,因此它显然没有按原样运行

我建议您设置一次“post2”结构,然后只更新每行的“data”数组内容,例如

post = { ... }
data = post2["params"][0]["data"]

然后使用

with open(...) as file:
    for line in file:
      line = line.strip()[:-1] # strip while-space and the trailing comma
      # NB: here I'm assuming it's well-formed JSON, which it's not at the moment
      d = json.loads(line)
      data[0] = d
      # TODO - POST call here...

相关问题 更多 >

    热门问题