В Python 3.7 я пытаюсь записать массив JSON в стандартный вывод, и я хотел бы удалить последнюю запятую в массиве
sys.stdout.write("[")
[sys.stdout.write(json.dumps(x, separators=(',', ': ')) + ",") for x in list]
sys.stdout.write("\b]") # I want to remove the final ',' from above.
Я знаю, что sys.stdout
буферизуется, поэтому я хотел бы удалить последний символ в этом буфере перед сбросом. Единственная проблема в том, что я не знаю, как правильно обращаться к этому буферу, а также гарантировать, что последний байт не записан.
Я запутался с символом \b
, но это ничего не делает, все, что происходит, это то, что символ \b
становится частью вывода.
В качестве фона stdout входит в поток Apache NiFi (не в окно консоли). Я бы предпочел использовать стандартный вывод, а не вторичный буфер в памяти, так как кажется, что это пустая трата памяти. Было бы здорово, если бы я мог удалить последний байт буфера stdout перед сбросом.
EDIT :
Некоторые люди в комментариях предполагают, что мое использование списочных пониманий - это не тот путь, и вместо этого запустите json.dumps
в списке. Если у кого-нибудь есть пример, как использовать это и убедиться, что у последнего элемента нет запятой, пожалуйста, покажите его!