Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 更新json文件的脚本_Python_Json - Fatal编程技术网

Python 更新json文件的脚本

Python 更新json文件的脚本,python,json,Python,Json,Python脚本,它接受两个输入,然后删除一些项 { “a”:[ “一个”, “两个”, “三个” ], “b”:[ “四”, “五个”, “六个” ], “c”:[ “七”, “八”, “九”, “十” ] } Python脚本: import json import sys alphaname=sys.argv[1] numname=sys.argv[2] with open('test.json', 'r+') as f: data = json.load(f) del da

Python脚本,它接受两个输入,然后删除一些项

{
“a”:[
“一个”,
“两个”,
“三个”
],
“b”:[
“四”,
“五个”,
“六个”
],
“c”:[
“七”,
“八”,
“九”,
“十”
]
}
Python脚本:

import json
import sys

alphaname=sys.argv[1]
numname=sys.argv[2]

with open('test.json', 'r+') as f:
  data = json.load(f)
  del data[alphaname][numname]
当我运行脚本
python purest.py a three
时, 它应该从
a
中删除
3个
,并更新json文件

以下是错误:

del数据[alphaname][numname]
TypeError:列表索引必须是整数,而不是str

numname
是一个字符串,当您使用
python purest.py a three运行程序时,它作为参数从中接收

data[alphaname]
提供一个数组,该数组是键
a

=>您对
数据[alphaname]
的输出将是[“一”、“二”、“三”]

您可以添加以下代码(一种非常基本的解决方法):

如果这对你有效,一定要告诉我。
祝您一切顺利。

我想这正是您想要的:

import json
import sys

alphaname = sys.argv[1]
numname = sys.argv[2]
filename = 'update_me.json'

with open(filename, 'r') as f:
    data = json.load(f)
    data[alphaname].remove(numname)

# Update file.
with open(filename, 'w') as f:
    json.dump(data, f, indent=4)

它给了我del data[alphaname][numname]类型错误:列表索引必须是整数,而不是str字典中的值是列表。不能通过名称访问列表值。您需要通过它们的索引来访问它们。类似这样的
deldata['a'][1]
。您传递的参数是什么?hi@martineau我提供了一个解决方案。这应该行得通。请看一看。因为它有代码,所以我无法在评论中发布。@SachinPC:它可能会工作(现在你已经修复了
类型错误
),但是如果数据[alphaname][I]!=numname:TypeError:列表索引必须是整数,而不是unicode。对不起,关于这一点,我漏掉了。我已经更新了答案@user17970。不用担心。很乐意帮忙。
import json
import sys

alphaname = sys.argv[1]
numname = sys.argv[2]
filename = 'update_me.json'

with open(filename, 'r') as f:
    data = json.load(f)
    data[alphaname].remove(numname)

# Update file.
with open(filename, 'w') as f:
    json.dump(data, f, indent=4)