Ошибка при запуске python-скрипта
Есть у меня код, который выдаёт нужную мне информацию из API. На Windows запускается прекрасно, но на Debian 11 т.е. на сервере - ни в какую, и выдаёт данную ошибку:
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/requests/models.py", line 971, in json
return complexjson.loads(self.text, **kwargs)
File "/usr/local/lib/python3.10/json/__init__.py", line 346, in loads
return _default_decoder.decode(s)
File "/usr/local/lib/python3.10/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/local/lib/python3.10/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)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/YumaBot/game_getMembers.py", line 10, in <module>
data = r.json()
File "/usr/local/lib/python3.10/site-packages/requests/models.py", line 975, in json
raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
UPD: Мой код:
import requests
token = "mytoken"
server = "9"
fraction = "3"
r = requests.get(f"https://api2.gerstlix.com/v1/game.getMembers/?token={token}&server={server}&fraction={fraction}")
data = r.json()
players = data['data']['players']
serverId = data['data']['serverId']
serverName = data['data']['serverName']
fractionId = data['data']['fractionId']
fractionName = data['data']['fractionName']
playersLastUpdate = data['data']['playersLastUpdate']
playersCount = data['data']['playersCount']
playersInfo = ""
for player in players:
if player["gameId"] == -1 and player["level"] == -1:
player["gameId"],player["level"] = "не в сети","не в сети"
playersInfo += f'{player["nickname"]}({player["accountId"]}) [R: {player["rank"]} | {player["rankLabel"]}] | Leader?: {player["isLeader"]} | online?: {player["isOnline"]} | in game: id:{player["gameId"]} / lvl: {player["level"]}\n'
result = f"""
Сервер: {serverName} ({serverId})
Информация об организации: {fractionName} ({fractionId}):
Всего игроков: {playersCount} (Last update: {playersLastUpdate})
Состав:
{playersInfo}
"""
print(result)
И в таком формате выглядит ответ от API: 
Ответы (1 шт):
Автор решения: Amgarak
→ Ссылка
Проверьте кодировку вашего файла. Это скорее всего решит вашу проблему.
with open("ваш_файл.json", encoding='utf-8', errors='ignore') as json_data:
data = json.load(json_data, strict=False)
Хорошо, допустим это был requests, то можно попробовать через loads:
json_data = полученный json.
data = json.loads(json_data, encoding='utf-8')
Можно так же поиграться с кодировками, например установить cp1251 вместо utf-8
Давайте попробуем так:
r = requests.get(url)
r.encoding = 'utf-8' #Принудительно укажем кодировку, так же попробуйте другие кодировки
data = r.json()
На крайний случай попробуйте так:
r.content.decode('utf-8')
Проверьте не пустой ли ответ приходит:
if (r.status_code == 200):
data = r.json()
else:
print("всё плохо")