I'm trying to load a file to a variable, but I get the error json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) in whitelist = json.load(f), what am I doing wrong?
def load_whitelist():
global whitelist
wl = "C:/Users/Administrator/Desktop/Software/whitelist.json"
if os.path.isfile(wl):
with open(wl, mode='r') as f:
whitelist = json.load(f)
f.close()
print(whitelist)
def save_whitelist():
wl = "C:/Users/Administrator/Desktop/Software/whitelist.json"
if os.path.isfile(wl):
with open(wl, mode='w') as f:
json.dump(whitelist, f, sort_keys=False)
f.close()
Full Traceback:
Traceback (most recent call last):
File "PC200.py", line 970, in <module>
load_whitelist()
File "PC200.py", line 51, in load_whitelist
whitelist = json.load(f)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\json\__init__.py", line 299, in load
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\json\__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\json\decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\json\decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x0000020022935828>
The JSON
[{"ignoresPlayerLimit": false, "name": "AndRKConnor8000","xuid":"2535435055474031"},{"ignoresPlayerLimit":false,"name":"ThePurplishGame","xuid":"2535461240132600"}]
Not really an answer but it cannot fit into a comment. With only the error message, it is impossible to know what happens. This error can be reproduced with an empty file, or with an incorrect encoding. Example simulating an empty file:
>>> import json
>>> import io
>>> fd = io.StringIO()
>>> wl = json.load(fd)
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
wl = json.load(fd)
File "D:\Program Files (x86)\Python37-32\lib\json\__init__.py", line 296, in load
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
File "D:\Program Files (x86)\Python37-32\lib\json\__init__.py", line 348, in loads
return _default_decoder.decode(s)
File "D:\Program Files (x86)\Python37-32\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "D:\Program Files (x86)\Python37-32\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Example simulating an UTF16 encoded file read as Latin1:
>>> t = '''[{"ignoresPlayerLimit": false, "name": "AndRKConnor8000","xuid":"2535435055474031"},{"ignoresPlayerLimit":false,"name":"ThePurplishGame","xuid":"2535461240132600"}]'''
>>> tt = t.encode('utf16').decode('latin1')
>>> fd=io.StringIO(tt)
>>> wl = json.load(fd)
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
wl = json.load(fd)
File "D:\Program Files (x86)\Python37-32\lib\json\__init__.py", line 296, in load
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
File "D:\Program Files (x86)\Python37-32\lib\json\__init__.py", line 348, in loads
return _default_decoder.decode(s)
File "D:\Program Files (x86)\Python37-32\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "D:\Program Files (x86)\Python37-32\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
The only way to discriminate the problem is to read and print the content of the file:
with open(wl, mode='r') as f:
data = f.read() # read file conten
print(data) # display it as text
print([hex(ord(i)) for i in data]) # and as an hex dump
That way you will be sure of the way Python actually reads the file.
def load_whitelist():
global whitelist
wl = "C:/Users/Administrator/Desktop/Software/whitelist.json"
if os.path.isfile(wl):
with open(wl, mode='r') as f:
whitelist = json.load(f)
f.close()
def save_whitelist():
wl = "C:/Users/Administrator/Desktop/Software/whitelist.json"
print(whitelist)
with open(wl, mode='w') as f:
json.dump(whitelist, f, sort_keys=False)
f.close()
It seems like there was an error with saving the whitelist and it deleted the JSON contents, the code itself was ok (I removed the if os.path.isfile(wl): as it was unnecessary). Thank you all for trying to help!
Related
I'm attempting to load two dictionaries using JSON. I save them with the following function:
def save_file(self):
print(save_dict['filename'])
with open(save_dict['filename'], 'w') as f:
save_list = [save_dict, cad_dict]
json.dump(save_list, f)
I then attempt to load them using this function:
def open_file(self):
global save_dict
global cad_dict
filename = fd.askopenfilename(
initialdir=r'C:\Users\Tim\Desktop\Code\Python\Surveying_Program',
title='Browse',
filetype = (('job files', '*.saj'), ("all files","*.*"))
)
with open(filename, 'r', encoding='utf-8') as f:
save_list = json.load(f)
save_dict = save_list[0]
cad_dict = save_list[1]
I end up with the following error:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.2288.0_x64__qbz5n2kfra8p0\lib\tkinter\__init__.py", line 1921, in __call__
return self.func(*args)
File "c:\Users\Tim\Desktop\Code\Python\Surveying_Program\survey_amateur_main.py", line 187, in open_file
save_list = json.load(f)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.2288.0_x64__qbz5n2kfra8p0\lib\json\__init__.py", line 293, in load
return loads(fp.read(),
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.2288.0_x64__qbz5n2kfra8p0\lib\json\__init__.py", line 346, in loads
return _default_decoder.decode(s)
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.2288.0_x64__qbz5n2kfra8p0\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.2288.0_x64__qbz5n2kfra8p0\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 64467 (char 64466)
PS C:\Users\Tim\Desktop\Code\Python\Surveying_Program>
For reference, here is an example of the file I'm attempting to load:
[{"filename": "C:/Users/Tim/Desktop/Code/Python/Surveying_Program/dxf_practice/job_file.saj", "point_dict": {"filename": "", "1": {"northing": 780443.4568, "easting": 2039690.279, "elevation": 286.5, "description": "Walls", "time": "10:25:11", "date": "11/25/2022"}}}, {"cad_filename": "C:/Users/Tim/Desktop/Code/Python/Surveying_Program/dxf_practice/one_object_dxf.dxf", "dxf_extents": [[1125.591828718476, 5050.379053781544], [1131.50998529643, 5054.804957938229]], "dxf_lines": [["0", [1125.591828718476, 5050.379053781544, 0.0], [1131.50998529643, 5054.804957938229, 0.0]]], "dxf_plines": [], "dxf_mtext": [], "dxf_circles": [], "dxf_arcs": []}]
I didn't look closely at my data and my ezdxf module was putting the coordinates as a an object that evidently doesn't work well with json. Converted those objects to strings and it now works.
So I got the JSONDecodeError in json.load() while everything seems to be right.
My code:
def write(name: str, text):
try:
with open("C:/Users/FlexGames/Desktop/Programming/Discord Bot/New Bot/banned.json", "w") as bannedload:
bannedjson[name] = text
json.dump(bannedjson, bannedload)
except NameError:
_load(jsonfile)
return write(name, text, jsonfile)
def _load():
global bannedjson, bannedload
with open("C:/Users/FlexGames/Desktop/Programming/Discord Bot/New Bot/banned.json", "r") as bannedload:
bannedjson = json.load(bannedload)
JSON File:
{
"banned": []
}
Error Output:
Traceback (most recent call last):
File "C:\Users\Try Me Btch\AppData\Local\Programs\Python\lib\site-packages\discord\client.py", line 333, in _run_event
await coro(*args, **kwargs)
File "C:\Users\FlexGames\Desktop\Programming\Discord Bot\New Bot\main.py", line 77, in on_message
await ban.user(message)
File "C:\Users\FlexGames\Desktop\Programming\Discord Bot\New Bot\New_Functions\ban.py", line 11, in user
jsonhandle.write("banned", int(content[1]))
File "C:\Users\FlexGames\Desktop\Programming\Discord Bot\New Bot\Functions\jsonhandle.py", line 27, in write
_load(jsonfile)
File "C:\Users\FlexGames\Desktop\Programming\Discord Bot\New Bot\Functions\jsonhandle.py", line 42, in _load
bannedjson = json.load(bannedload)
File "C:\Users\Try Me Btch\AppData\Local\Programs\Python\lib\json\__init__.py", line 293, in load
return loads(fp.read(),
File "C:\Users\Try Me Btch\AppData\Local\Programs\Python\lib\json\__init__.py", line 346, in loads
return _default_decoder.decode(s)
File "C:\Users\Try Me Btch\AppData\Local\Programs\Python\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\Try Me Btch\AppData\Local\Programs\Python\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Most "solutions" I found in the internet were faults like .loads() or large and lower case faults or something like this but not this error in this context
So the solution was like SiHa said something was broken with the path, I don't know what exactly but as I removed the whole path but the file it worked 🤷♂️
I have a school schedule in my program, and when I use
import json
if choice == "Schedule":
with open("Schedule.json", "r") as schedule_file:
schedule_output = json.load(schedule_file)
schedule_choice = input('\nDo you want to exit or change the schedule?\n')
The problem comes up:
Traceback (most recent call last):
File "practice.py", line 92, in <module>
schedule_output = json.load(schedule_file)
File "C:\Users\Samwise\AppData\Local\Programs\Python\Python38\lib\json\__init__.py", line 293, in load
return loads(fp.read(),
File "C:\Users\Samwise\AppData\Local\Programs\Python\Python38\lib\json\__init__.py", line 357, in loads
return _default_decoder.decode(s)
File "C:\Users\Samwise\AppData\Local\Programs\Python\Python38\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\Samwise\AppData\Local\Programs\Python\Python38\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
I tried to change the encoding, but it didn't help me.
import json
import pandas as pd
import collections
import os
path = '/home/vinay/hdfs/kafka-logs/event_tablenames.txt'
file_read = '/home/vinay/hdfs/kafka-logs/hdfs_events/'
table_file = '/home/hdfs/vinay/kafka-logs/events_tables/'
con_json = '/home/vinay/hdfs/kafka-logs/json_to_txt/'
os.chdir(file_read)
files=os.listdir('.')
for file in files:
line = file.split('.')[0]
with open(file ,'r') as f:
print (json.load(f))
data = json.load(f)
key = data[line]
od = collections.OrderedDict(sorted(key.items()))
df = pd.DataFrame(list(od.items()), columns=['col_name', 'type'])
df['col_name'].to_csv(con_json + line + '.txt',sep='\t', index=False, header=False)
Below is a full traceback:
Traceback (most recent call last):
File "events_match_hdfs.py", line 29, in <module>
data = json.load(f)
File "/home/vinay/anaconda3/lib/python3.5/json/__init__.py", line 268, in load
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
File "/home/vinay/anaconda3/lib/python3.5/json/__init__.py", line 319, in loads
return _default_decoder.decode(s)
File "/home/vinay/anaconda3/lib/python3.5/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/home/vinay/anaconda3/lib/python3.5/json/decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
You didn't show the full traceback from the error in your question, so this is a just a guess.
I think the problem is because you're trying to do json.load(f) twice on the same file. The first one consumes the entire file, so the second one fail. Try changing the first couple of lines after opening the file to this:
with open(file ,'r') as f:
data = json.load(f)
print(data)
Json filename was not proper,and the size was zero.Due to that it was
throwing error.
Thanks all for your inputs.
for i in os.listdir("./saves/"):
path = './saves/' + i
if path.endswith(".json"):
with open(path, "r"):
config = json.loads(path)
ctime = config["Creation Time"]
Okay, this is the small code that's causing errors. I'm getting a json decoder error Here is the callback
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/tkinter/__init__.py", line 1550, in __call__
return self.func(*args)
File "/Users/acrobat/PycharmProjects/Jan9coderun/TranslatorVCS/Quiz.py", line 318, in saveGame
config = json.loads(path)
File "/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/json/__init__.py", line 319, in loads
return _default_decoder.decode(s)
File "/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/json/decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
My saves folder is in the same working directory as my code and has one quiz.json, one notes.txt, and one __init__.py file.