Python: JSONDecodeError: Ожидаемое значение: строка 1, столбец 1 (символ 0)

Узнав из моего прошлого поста об этом, я вставил весь код. Ниже то, что я делаю:

в моем коде я создаю и меняю каталог и сохраняю файл Json в этом каталоге, следя за тем, чтобы я не ссылался на пустой Json или файл JSON с тем же файлом, который может дать мне эту ошибку

time=datetime.now().strftime("%Y_%m_%d-%I_%M_%S_%p")
docfilename='network health check Report' +'-' + time
# Get the current working directory
current_dir = os.getcwd()

print("Saving file in directory-" + docfilename)
if not os.path.exists(docfilename):
    os.mkdir(docfilename)

# Define the path of the new directory
new_dir_path = os.path.join(current_dir, docfilename)

os.chdir(new_dir_path)  

В моем скрипте Python я запускаю скрипт PowerShell, который генерирует пару файлов JSON и сохраняет их в каталоге, созданном выше, как показано ниже:

    ps_script = 'H:\Eurrowings Health check\Azure-LBheathcheck.ps1'
    args = ["-AzureUsername", azure_username, "-pass", azure_password]
    process1 = subprocess.Popen(["powershell.exe", "-File", ps_script] + args)
    process1.wait()
    print("Exit code:", process1.returncode)

Я запускаю ниже и получаю ошибку.

f = open('publicIpaddress-Aviatrix-firenet-nv-p-3z-inet-vnet-02.json')
  data = json.load(f)

Ошибка:

Пожалуйста, помогите мне на том же .. как это исправить.

Я убедился, что нахожусь в правильном каталоге, так как он не дает мне «файл не найден». Я также проверил, что формат Json действителен онлайн.

Edit1: добавление вывода print(f.read())

     f = open('publicIpaddress-Aviatrix-firenet-nv-p-3z-inet-vnet-02.json')

   print(f.read())

Я думаю, что лучший способ отладить это — распечатать содержимое файла в коде — заменить загрузку json на print(f.read()) и проверить, что он имеет ожидаемое содержимое.

Mihai 17.04.2023 23:09

Похоже, у вас есть пара неожиданных символов в начале файла?

Nick 18.04.2023 01:17

привет @mihai: я добавил скриншот print(f.read()) в сообщение. у него есть содержимое JSON, но мне странно, как оно выглядит на выходе. Учитывая, что эти файлы генерируются из ConvertTo-Json , связано ли это с кодировкой или чем-то еще? .. Также я заметил знак «ÿþ» в начале вывода перед [ .. что это значит?

Tarun Gupta 18.04.2023 01:17

@nick: я использую приведенные ниже команды powershell для создания файлов JSON: ..пример кода ниже [string]$jsonfilename = "publicIpaddress-" + "$lbname" +".json" $finaldata1=$result |ConvertTo-Json $finaldata1 | выходной файл $jsonfilename

Tarun Gupta 18.04.2023 01:20
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваша проблема в том, что ваш входной файл закодирован как UTF-16; ÿþ в начале данных — это метка порядка байтов (BOM). Вам нужно будет открыть файл в двоичном режиме, прочитать содержимое, а затем расшифровать его:

f = open('publicIpaddress-Aviatrix-firenet-nv-p-3z-inet-vnet-02.json', 'rb')
content = f.read()
data = json.loads(content.decode('utf-16'))

Другие вопросы по теме