あなたはファイルのバイナリ表現は、JSONモジュールによって読み取り可能であることを行っていないため、「RB」を指定する必要はありません。おそらく "utf-8"エンコーディングと "読み込み"が必要です。編集:私はもともとこれらの両方がデフォルトであると言っていましたが、多くのOSのデフォルトのエンコーディングが異なり、Pythonはopen()のデフォルトとしてシステム設定を使用しています。私は、明示的にエンコーディング設定を "utf-8"として提供することをお勧めします。
jsonは、文字列から読み込まれる "json.loads"の代わりに "json.load"ではなく、 "json.load"を使用して読み込みをサポートしているため、テキストとして読み込みをスキップしてJSONに右に移動できます。私は個々の行を "ロード"したくないと考えています。なぜなら、これは有効なJSONではないからです。
import json
# open has __enter__ and __exit__ functions, so we can call it as a guard
# using "with" syntax and it'll close when the scope ends
with open(r".\myjson.json", encoding="utf-8") as fh:
# load() is a convenience function to help us avoid iterating lines
# on our own. It calls loads() on the whole doc and returns an obj
json_obj = json.load(fh)
print (json_obj)
はたぶん、あなたの中に 'B' を取り除きますオープンコール? https://docs.python.org/2/library/functions.html#openに記載されているように、ファイルをバイナリ形式でロードすると、文字列として扱われていない可能性があります。 – TW80000
ファイルの行を1行だけ使用すると、jsonにロードできますか? 'json.loadsのような(file.readlines()[0])' –
TW80000 @あなたの提案は私の問題を解決します。また、 'open'呼び出しの中で' encoding = 'utf-8''を直接渡すことも学びました。ご意見ありがとうございます。 – Greg