Как отобразить все данные и сохранить их в текстовом файле? - PullRequest
0 голосов
/ 12 сентября 2018
read = db.Student.find()
# use iter() to include loop for the first item index = 0
# use next(read, None) if you want to skip the first item index = 0
# object = iter(read)
object = iter(read)
'''Do a for loop to loop and print out each document'''
for object in read:
    with open("Student.txt", "w", newline="") as fp:
        read_records = str(object['_id']), str(object['ID']), object['item'], 
        str(object['qty'])
        r = ' '.join(read_records)
        print(r)
        fp.write(r)
        fp.close()

Во-первых, я хочу получить все данные из коллекции.Во-вторых, я хочу сохранить все полученные данные в текстовый файл.Однако мне удалось сохранить только данные последнего элемента.Я не смог сохранить первый элемент в четвертый элемент в текстовом файле!Пожалуйста, помогите!

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Вы открываете выходной файл для записи в каждой итерации цикла.Каждую итерацию новый файл открывается в режиме write , перезаписывая существующий файл "Students.txt".

read = db.Student.find()
# use iter() to include loop for the first item index = 0
# use next(read, None) if you want to skip the first item index = 0
# object = iter(read)
object = iter(read)
'''Do a for loop to loop and print out each document'''
with open("Student.txt", "w", newline="") as fp:
  for object in read:
    read_records = str(object['_id']), str(object['ID']), object['item'], 
    str(object['qty'])
    r = ' '.join(read_records)
    print(r)
    fp.write(r)
  fp.close()

Я думаю, это решит вашу проблему.

0 голосов
/ 12 сентября 2018

Вам не нужно закрывать файлы, используя with open, это заботится об этом автоматически

Попробуйте использовать это:

read = db.Student.find()
    # use iter() to include loop for the first item index = 0
    # use next(read, None) if you want to skip the first item index = 0
    # object = iter(read)
    object = iter(read)
    '''Do a for loop to loop and print out each document'''
    with open("Student.txt", "w", newline="") as fp:
        for my_obj in read:
          read_records = str(my_obj['_id']), str(my_obj['ID']), my_obj['item'], 
          str(my_obj['qty'])
          r = ' '.join(read_records)
          print(r)
          fp.write(r)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...