Чтение кортежей, хранящихся в текстовом файле - PullRequest
3 голосов
/ 02 ноября 2011

Я искал способ постоянного хранения кортежей, созданных программой Python, также после выполнения. Поэтому я просто решил для простоты записать эти данные в текстовый файл (или можно порекомендовать какое-нибудь более элегантное, но простое решение?)

поэтому команда для этого выглядит так:

import codecs
txt = codecs.open("data.txt", "w", encoding="utf-8")
    .
    .
    .
data = set1, set2, set3
print >> txt, data

в результате текстовый файл выглядит как

(u'name1', 'file1', 'date1')
(u'name2', 'file2', 'date2')
    .
    .
    .

как правильно обращаться к data.txt, отображая только все вторые наборы данных, в примере case 'file1', 'file2' и т. Д.?

Я возился с циклами for, read () и readline (), но мне так и не удалось получить простой вывод второго элемента в моем файле ... Я надеюсь, что кто-то может мне там помочь?

Заранее большое спасибо!

Ответы [ 2 ]

5 голосов
/ 02 ноября 2011

Подумайте об использовании pickle.dump и pickle.load , чтобы сделать всю работу за вас.Это разумный выбор, если вы не возражаете против того, чтобы файл находился в формате, специфичном для Python.

Также рассмотрите возможность использования sqlite3 для хранения данных.Этот формат доступен для чтения другими программами и может быть запрошен (т. Е. Вы можете получить только поле имя файла вместо всей записи).

В противном случае, традиционное решение для чтения дампа с открытым текстомдолжен прочитать файл построчно, либо проанализировать или оценить текст, чтобы преобразовать его обратно в объект Python, а затем извлечь интересующие поля:

for line in codecs.open("data.txt", "r", encoding="utf-8"):
    tup = ast.literal_eval(line)
    print tup[1]
3 голосов
/ 02 ноября 2011

Попробуйте использовать pickle , чтобы сохранить переменные такими, как они есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...