Ссылка, которой вы поделились в своем вопросе, четко указывает формат
Значение указывается в формате ISO 8601 (ГГГГ-ММ-ДДЧч: мм: сс.сZ).
Таким образом, ваша проблема в том, что когда информация о микросекундах недоступна, изоформат не будет иметь микросекунды.Ниже код показывает разницу
>>> current_date = datetime.now()
>>> current_date.isoformat()
'2018-05-20T10:18:26.785085'
>>> current_date.replace(microsecond=0).isoformat()
'2018-05-20T10:18:26'
Так что для файлов, с которыми он работает, microsecond
будет ненулевым.Таким образом, решение простое
recordingDate = datetime.fromtimestamp(os.path.getctime(single_file)).replace(microsecond=0).isoformat("T")+".0Z"
Это обеспечит усечение микросекунды и установит .0
позже