Python 2.7 – запись и чтение списка из файла

Это немного странный запрос, но я ищу способ написать список в файл, а затем прочитать его в другой раз.

У меня нет возможности переделать списки, чтобы они были правильно сформированы / отформатированы, как показано в примере ниже.

Мои списки имеют следующие данные:

test data here this is one group :) test data here this is another group :) 

  • Как сохранить изображение с помощью PIL?
  • Постоянно добавлять каталог в PYTHONPATH
  • Как сохранить пользовательские настройки IDLE python?
  • Есть ли простой способ сделать и сохранить анимацию с Pygame?
  • Matplotlib.pyplot: сохранить графики в pdf
  • сохранение изображений на питоне с очень высоким качеством
  • как сделать функции сохранения / загрузки в pygame?
  • восстановить dict из массива 0-d numpy
  • 2 Solutions collect form web for “Python 2.7 – запись и чтение списка из файла”

    Если вам не нужно, чтобы он был доступен для чтения / редактирования, самым простым решением является просто использовать pickle .

    Написать:

     with open(the_filename, 'wb') as f: pickle.dump(my_list, f) 

    Читать:

     with open(the_filename, 'rb') as f: my_list = pickle.load(f) 

    Если вам нужно, чтобы они были удобочитаемыми для человека, нам нужна дополнительная информация.

    Если my_list гарантированно будет списком строк без встроенных строк перевода, просто напишите их по одной в строке:

     with open(the_filename, 'w') as f: for s in my_list: f.write(s + '\n') with open(the_filename, 'r') as f: my_list = [line.rstrip('\n') for line in f] 

    Если они являются строками Unicode, а не байтами, вы должны их encode . (Или, что еще хуже, если они байтовые строки, но не обязательно в той же кодировке, что и ваша система по умолчанию.)

    Если у них могут быть символы новой строки или непечатаемые символы и т. Д., Вы можете использовать экранирование или цитату. Python имеет множество различных видов экранирования, встроенных в stdlib.

    Давайте используем unicode-escape здесь, чтобы решить обе указанные проблемы сразу:

     with open(the_filename, 'w') as f: for s in my_list: f.write((s + u'\n').encode('unicode-escape')) with open(the_filename, 'r') as f: my_list = [line.decode('unicode-escape').rstrip(u'\n') for line in f] 

    Вы также можете использовать решение в стиле 3.x в 2.x, либо с модулем codecs , либо с модулем io : *

     import io with io.open(the_filename, 'w', encoding='unicode-escape') as f: f.writelines(line + u'\n' for line in my_list) with open(the_filename, 'r') as f: my_list = [line.rstrip(u'\n') for line in f] 

    * TOOWTDI, так что это один очевидный способ? Это зависит … Для короткой версии: если вам нужно работать с версиями Python до версии 2.6, используйте codecs ; если нет, используйте io .

    Пока ваш файл имеет последовательное форматирование (например, разрывы строк), это просто с помощью простых операций ввода-вывода и операций с файлами:

     with open('my_file.txt', 'rU') as in_file: data = in_file.read().split('\n') 

    Это будет хранить ваш файл данных в виде списка элементов, по одному на строку. Чтобы затем вставить его в файл, вы сделали бы обратное:

     with open('new_file.txt', 'w') as out_file: out_file.write('\n'.join(data)) # This will create a string with all of the items in data separated by new-line characters 

    Надеюсь, это соответствует тому, что вы ищете.

    Interesting Posts

    Как использовать файл copy, если в имени каталога есть пробелы?

    Как открыть несколько файлов с помощью «с открытым» в Python?

    Обнаружение сообщества в Networkx

    Перемешать массив с помощью python, упорядочить порядок элементов массива с помощью python

    Доступ к функциям оператора оператора по символу

    Python: использование 4 пробелов для отступа. Зачем?

    Мне нужно перебирать текстовый файл и печатать определенный текст, начиная с и заканчивая выполнение условия в python 3

    python получает отметку времени в файле в формате mm / dd / yyyy

    Использование C # сборок из Python через pythonnet

    Поддерживает ли Python 2.5.2 Unicode для lower () и upper ()?

    Быстрая numpy roll_product

    Как определить, содержит ли 2-мерный список значение?

    Что такое :: (двойная двоеточие) в Python при подпиксельных последовательностях?

    unhashable type: 'dict' Тип Ошибка

    Сохранять пользовательские атрибуты при подгонке подкласса массива numpy

    Python - лучший язык программирования в мире.