我有下面的代码,期望1个或多个文件名作为参数。
它适用于一个文件,但是现在输入参数可以是多个文件,例如1.json 2.json 3.json
。
我该如何处理?
import sys
import os
import json
inFile = sys.argv[1]
print(inFile)
with open(inFile, 'r') as file:
try:
json_data = json.load(file)
except ValueError as e:
print "Invalid Json supplied:%s" % e
exit(1)
else:
print "json file ok"
print(json_data)
答案 0 :(得分:1)
由于argv
是一个列表(为您完成了传递的arg字符串的解析),因此可以对其进行迭代,而跳过程序文件名的argv[0]
:
import json
import sys
for arg in sys.argv[1:]:
with open(arg, "r") as file:
try:
json_data = json.load(file)
print "json file ok"
print json_data
except ValueError as e:
print "Invalid JSON supplied: %s" % e
exit(1)
您可能希望将此数据放入列表中,以便可以在程序中对其进行处理:
import json
import sys
data = []
for arg in sys.argv[1:]:
with open(arg, "r") as file:
try:
data.append(json.load(file))
except ValueError as e:
print "Invalid JSON supplied: %s" % e
exit(1)