我是CS的大一学生,试图调试一个简单的Python脚本。
该脚本正在尝试解析JSON文件的目录,又名AWS桶。我不知道这些错误是从哪里来的,但是:
import json
import os
from pprint import pprint
jsonDirectory = "/path/to/dir/"
targetRegion = "-insert-region-here"
print("Searching for records with AWS Region: " + targetRegion)
print("")
for filename in os.listdir(jsonDirectory):
print("Reading: " + filename)
data = json.dumps(open(jsonDirectory + filename))
for i in range(len(data["Records"])):
if data["Records"][i]["awsRegion"] == targetRegion:
print("---------------------------")
print("Record #" + str(i))
print("Username: " + data["Records"][i]["userIdentity"] ["userName"])
print("Event name: " + data["Records"][i]["eventName"])
print("Event time: " + data["Records"][i]["eventTime"])
print("---------------------------")
print("")
print("Completed reading files.")
错误:
最佳答案
让我假设您不在西欧或美国,并且默认编码不是UTF-8
或通常非常兼容的诸如iso-8859-1
的东西。从上面的评论
data = json.load(open(jsonDirectory + filename))
如果将该语句分隔为:
f = open(jsonDirectory + filename)
fdata = f.read()
data = json.loads(fdata)
您将看到
fdata = f.read()
中发生了错误。建议是:f = open(jsonDirectory + filename, encoding='my-encoding')
fdata = f.read()
data = json.loads(fdata)
如果不确定,请尝试强制
open
忽略/忽略错误。来自Python文档:https://docs.python.org/3/library/functions.html#open以
ignore
开头,如下所示:f = open(jsonDirectory + filename, errors='ignore')
fdata = f.read()
data = json.loads(fdata)
并检查输出是否满足您的要求或哪里出了问题。