Запись списка в файл с помощью Python

Примечание: свойство, вероятно, лучший способ сделать это, посмотрите на другие ответы

Определите __setattr__(self, name, value) и / или __getattr__(self, name): obj.abc -> type(obj).__getattr__(obj, 'abc')

537
задан APerson 16 January 2016 в 21:32
поделиться

5 ответов

Вы можете использовать цикл:

with open('your_file.txt', 'w') as f:
    for item in my_list:
        f.write("%s\n" % item)

В Python 2 вы также можете использовать

with open('your_file.txt', 'w') as f:
    for item in my_list:
        print >> f, item

Если вам нравится вызов одной функции, по крайней мере удалите квадратные скобки [] , так что строки, которые нужно напечатать, создаются по одной (genexp, а не listcomp) - нет причин занимать всю память, необходимую для материализации всего списка строк.

808
ответ дан 22 November 2019 в 22:01
поделиться
file.write('\n'.join(list))
12
ответ дан 22 November 2019 в 22:01
поделиться

Более простой способ:

outfile.write("\n".join(itemlist))

Вы можете гарантировать, что все элементы в списке элементов являются строками, используя выражение генератора:

outfile.write("\n".join(str(item) for item in itemlist))

Помните, что весь список itemlist должен быть быть в памяти, поэтому позаботьтесь о потреблении памяти.

257
ответ дан 22 November 2019 в 22:01
поделиться

Что вы собираетесь делать с файлом? Существует ли этот файл для людей или других программ с четкими требованиями к совместимости?

Если вы просто пытаетесь сериализовать список на диск для последующего использования тем же приложением на Python, вам следует выбрать список .

import pickle

with open('outfile', 'wb') as fp:
    pickle.dump(itemlist, fp)

Чтобы прочитать его:

with open ('outfile', 'rb') as fp:
    itemlist = pickle.load(fp)
347
ответ дан 22 November 2019 в 22:01
поделиться

Еще один способ. Сериализуйте в json, используя simplejson (включенный как json в python 2.6):

>>> import simplejson
>>> f = open('output.txt', 'w')
>>> simplejson.dump([1,2,3,4], f)
>>> f.close()

Если вы изучите output.txt:

[1, 2, 3, 4]

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

86
ответ дан 22 November 2019 в 22:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: