Узнав из моего прошлого поста об этом, я вставил весь код. Ниже то, что я делаю:
в моем коде я создаю и меняю каталог и сохраняю файл 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())
Похоже, у вас есть пара неожиданных символов в начале файла?
привет @mihai: я добавил скриншот print(f.read()) в сообщение. у него есть содержимое JSON, но мне странно, как оно выглядит на выходе. Учитывая, что эти файлы генерируются из ConvertTo-Json , связано ли это с кодировкой или чем-то еще? .. Также я заметил знак «ÿþ» в начале вывода перед [ .. что это значит?
@nick: я использую приведенные ниже команды powershell для создания файлов JSON: ..пример кода ниже [string]$jsonfilename = "publicIpaddress-" + "$lbname" +".json" $finaldata1=$result |ConvertTo-Json $finaldata1 | выходной файл $jsonfilename






Ваша проблема в том, что ваш входной файл закодирован как 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'))
Я думаю, что лучший способ отладить это — распечатать содержимое файла в коде — заменить загрузку json на
print(f.read())и проверить, что он имеет ожидаемое содержимое.