如何解决如何在python中将argparse与json文件一起使用
我正在用 Python 处理一个项目,我试图用 argparse
设置一些参数。当我在终端中输入其中一个时,我从 JSON 文件中获得了一些信息,但我不知道如何去做。到目前为止,我得到了这些东西:
{
"services": [
{
"name": "ac","version": "1.0.8","service": "running","url": "https://portal.azure.com/#home","disk usage": "20%"
},{
"name": "acc","disk usage": "63%"
},{
"name": "acv","disk usage": "37%"
},{
"name": "acf","disk usage": "48%"
},{
"name": "ach","service": "error","disk usage": "10%"
},{
"name": "acj","service": "stopped","disk usage": "23%"
},{
"name": "acq","disk usage": "65%"
},{
"name": "bc",{
"name": "bcc","disk usage": "25%"
},{
"name": "bcx","disk usage": "4%"
},{
"name": "bcn","disk usage": "50%"
},{
"name": "bcm","disk usage": "35%"
}
]
}
这是我的 JSON 文件,这些是我的 .py
中的参数:
#argparse parameters config
parser = argparse.ArgumentParser()
parser.add_argument("-f","--fullreport",help="printing the full report",default="*")
parser.add_argument("-g","--graphreport",help="printing the graph report",default="*")
parser.add_argument("-s","--services",help="services to be test",default=["*"])
parser.add_argument("-d","--diskusage",help="see the disk usage")
args = parser.parse_args()
我有更多代码,但它是使用 with open 和 a for 例如打印所有 JSON 文件,但我想要的是仅打印例如使用参数 -s
的服务。
解决方法
您可以使用 for
循环:
def print_service_names(data):
print('Services:')
for service in data['services']:
print(service['name'])
def print_service_disk_usages(data):
print('Disk Usage:')
for service in data['services']:
print(f'{service["name"]}:\t{service["disk usage"]}')
print_service_names(json_data)
print_service_disk_usages(json_data)
输出:
Services:
ac
acc
acv
acf
ach
acj
acq
bc
bcc
bcx
bcn
bcm
Disk Usage:
ac: 20%
acc: 63%
acv: 37%
acf: 48%
ach: 10%
acj: 23%
acq: 65%
bc: 20%
bcc: 25%
bcx: 4%
bcn: 50%
bcm: 35%
如果你打算用数据做一些更高级的事情,你可以使用推导来重塑它:
# format the data with comprehensions
service_names = [service['name']
for service in json_data['services']]
disk_usage = {service['name']: service['disk usage']
for service in json_data['services']}
from pprint import pprint
pprint(service_names)
pprint(disk_usage)
输出:
['ac','acc','acv','acf','ach','acj','acq','bc','bcc','bcx','bcn','bcm']
{'ac': '20%','acc': '63%','acf': '48%','ach': '10%','acj': '23%','acq': '65%','acv': '37%','bc': '20%','bcc': '25%','bcm': '35%','bcn': '50%','bcx': '4%'}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。