Примечание: свойство, вероятно, лучший способ сделать это, посмотрите на другие ответы
Определите __setattr__(self, name, value)
и / или __getattr__(self, name)
: obj.abc
-> type(obj).__getattr__(obj, 'abc')
Вы можете использовать цикл:
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) - нет причин занимать всю память, необходимую для материализации всего списка строк.
Более простой способ:
outfile.write("\n".join(itemlist))
Вы можете гарантировать, что все элементы в списке элементов являются строками, используя выражение генератора:
outfile.write("\n".join(str(item) for item in itemlist))
Помните, что весь список itemlist
должен быть быть в памяти, поэтому позаботьтесь о потреблении памяти.
Что вы собираетесь делать с файлом? Существует ли этот файл для людей или других программ с четкими требованиями к совместимости?
Если вы просто пытаетесь сериализовать список на диск для последующего использования тем же приложением на Python, вам следует выбрать список .
import pickle
with open('outfile', 'wb') as fp:
pickle.dump(itemlist, fp)
Чтобы прочитать его:
with open ('outfile', 'rb') as fp:
itemlist = pickle.load(fp)
Еще один способ. Сериализуйте в 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]
Это полезно, потому что синтаксис является питоническим, он удобен для чтения человеком и может быть прочитан другими программами на других языках.