Това ли е най-чистият начин за записване на списък във файл, тъй като writelines()
не вмъква символи за нов ред?
file.writelines(["%s\n" % item for item in list])
Изглежда, че има стандартен начин...
Можете да използвате цикъл:
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) - няма причина да заемате цялата памет, необходима за материализиране на целия списък от низове.
Какво ще правите с файла? Съществува ли този файл за хора или за други програми с ясни изисквания за оперативна съвместимост?
Ако просто се опитвате да сериализирате списък на диска за последващо използване от същото приложение на Python, трябва да pickleing списъка.
import pickle
with open('outfile', 'wb') as fp:
pickle.dump(itemlist, fp)
За да го прочетете обратно:
with open ('outfile', 'rb') as fp:
itemlist = pickle.load(fp)
По-простият начин е:
outfile.write("\n".join(itemlist))
Можете да гарантирате, че всички елементи в списъка с елементи са низове, като използвате генераторен израз:
outfile.write("\n".join(str(item) for item in itemlist))
Запомнете, че всички списъци itemlist
трябва да са в паметта, така че се погрижете за потреблението на памет.