我是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)

并检查输出是否满足您的要求或哪里出了问题。

10-07 19:16
查看更多