Как вытащить массив из collections

Рейтинг: -2Ответов: 1Опубликовано: 18.03.2023

Нужно в файл записать изменённую collections

import collections
import json
    
    # список для записи, но с помощью json можно записывать любые объекты
    lst = ['М3ГАН / M3GAN (2022) BDRip [H.264/720p] [MVO]', 'М3ГАН / M3GAN (2022) BDRip [H.264] [MVO]', 'Тысяча строк лжи / Tausend Zeilen / A Thousand Lines (2022) BDRip [MVO]', 'Пропавший король / The Lost King (2022) WEB-DL [H.264/1080p] [MVO]', 'Кокаиновый медведь / Cocaine Bear (2023) WEB-DL [H.264/1080p]', 'Моя пиратская свадьба / Shotgun Wedding (2022) WEB-DLRip [H.264]', 'Моя пиратская свадьба / Shotgun Wedding (2022) WEB-DL [H.264/720p]', "Шакра / Tian long ba bu zhi qiao feng chuan / Donnie Yen's Sakra / Sakra (2023) BDRip [MVO]", 'Одиноки вместе / Alone Together (2022) BDRip [H.264]', 'Оставленные позади: Восстание антихриста / Left Behind: Rise of the Antichrist (2023) BDRip [MVO]', 'Малышка Дикси / Little Dixie (2023) WEB-DLRip [H.264] [MVO]', 'Моя пиратская свадьба / Shotgun Wedding (2022) WEB-DL [H.264/1080p]', 'Моя пиратская свадьба / Shotgun Wedding (2022) UHD WEB-DL [H.265/2160p] [4K, HDR10+, 10-bit]', 'Кокаиновый медведь / Cocaine Bear (2023) WEB-DLRip [H.264] [MVO]', 'Марлоу / Marlowe (2022) WEB-DLRip [H.264/720p]', 'Марлоу / Marlowe (2022) WEB-DL [H.264/1080p]', 'Марлоу / Marlowe (2022) UHD WEB-DL [H.265/2160p] [4K, HDR10+, 10-bit]', 'Марлоу / Marlowe (2022) WEB-DLRip [H.264]', 'Операция «Фортуна»: Искусство побеждать / Operation Fortune: Ruse de guerre (2022) WEB-DLRip [H.264/1080p] [MVO]']
    
    
    # открываем файл в режиме записи (обязательно)
    # файл не нужно закрывать если используется с `with`
    with open('file1.txt', 'w') as fw:
        # записываем
        json.dump(lst, fw)
    
    # открываем файл в режиме чтения
    with open('file1.txt', 'r') as fr:
        # читаем из файла
        array = json.load(fr)
    
    posted_q_2 = collections.deque((array), maxlen=20)
    print(array)
    print(posted_q_2)
    posted_q_2.appendleft('Новый фильм')
    print(posted_q_2)

Ответы

▲ 1Принят

В исходном примере вы уже записываете в файл и читаете из файла, поэтому не очень понятно, что именно при выполнении задачи у вас вызвало трудности.

Но осмелюсь предположить, что они были связаны с тем, что экземпляр collections.deque не является сериализуемым объектом и при попытке сериализации в json могла выпасть соответствующая ошибка. Эта проблема решается конвертацией последовательности в любой сериализуемый тип, например, в список: list(posted_q_2)

Итого:

with open('file2.txt', 'w', encoding='utf-8') as fw:    
    json.dump(list(posted_q_2), fw)