Артем Марш, в коде полно ошибок:
- После первой строки не нужен отступ(4 пробела перед for ...)
- Не понятно, какая необходимость извлекать сведения из словаря в переменные? (name = item['first_name'], ...)
- Дуплицирование кода
print('|', name, lname, '|', 'id' + str(iduser), '|', 'Пол:', sex, '|', '==>', online)
. Во всех случаях одно и то же, и поэтому печать на экран можно вывести из блока if sex == 1
- Запись в файл лучше оформить через контекст, т.е. через with
- И самое главное!
Сам файл создался, но записей в нем нету.
. Файл Вы открываете на запись, а не на добавление. Получается при каждом проходе цикла файл перезаписывается без сохранения предыдущих результатов. Режим для добавления строк в файл:f = open('result.txt', mode='a')
- Проверка связанная с полом, несколько переусложнена. Лучше подобные проверки выводить в функции для чистоты кода. Не буду писать подробнее, т.к. потребует еще большего времени для объяснения
По поводу вопроса в комментарии к ответу
Сергей Горностаев:
- Какой смысл в преобразовании str в bytes при записи?(.encode('utf-8')) Чтобы при чтении преобразовать обратно в строку Unicode?! По мне, так логичнее так и хранить в Unicode. При открытии файла на запись указать кодировку:
with open('result.txt', encoding='utf-8') as f:
...
- Ошибка TypeError: sequence item 3: expected str instance, int found выводится, т.к. аргументами метода join должны быть коллекция из строк(str). А переменная iduser типа int(целое число). Нужно преобразовать перед передачей в join:
'\t'.join([ name, lname, online, str(iduser)])
Вот код для записи:
with open('result.txt', encoding='utf-8', mode='a') as f:
f.write('\t'.join([ name, lname, online, str(iduser)]))
или
f = open('result.txt', encoding='utf-8', mode='w')
for item in group['items']:
...
f.write('\t'.join([ name, lname, online, str(iduser)]))
...
f.close()
P.S. И маленький совет не связанный с ошибками. Формат в котором Вы записываете в файл напоминает CSV. Поменяйте:
- расширение файла на csv
- разделитель вместо таба(/t) используйте точку с запятой (;)
- и первыми строчками можете добавить заголовки для полей (расшифровка полей)
И можете смотреть в файл в табличных редакторах(Excel, ...), подвергать в них анализу, сортировке, ...