How do you save each element of a list in a .txt file, one per line?
11,682
Solution 1
Simply open your file, join your list with the desired delimiter, and print it out.
outfile = open("file_path", "w")
print >> outfile, "\n".join(str(i) for i in your_list)
outfile.close()
Since the list contains integers, it's needed the conversion. (Thanks for the notification, Ashwini Chaudhary).
No need to create a temporary list, since the generator is iterated by the join method (Thanks, again, Ashwini Chaudhary).
Solution 2
You can use map
with str
here:
pList = [5, 9, 2, -1, 0]
with open("data.txt", 'w') as f:
f.write("\n".join(map(str, pList)))
Author by
Rushy Panchal
Updated on June 17, 2022Comments
-
Rushy Panchal almost 2 years
I have a list,
pList
. I want to save it to a text (.txt
) file, so that each element of the list is saved on a new line in the file. How can I do this?This is what I have:
def save(): import pickle pList = pickle.load(open('primes.pkl', 'rb')) with open('primes.txt', 'wt') as output: output.write(str(pList)) print "File saved."
However, the list is saved in just one line on the file. I want it so every number (it solely contains integers) is saved on a new line.
Example:
pList=[5, 9, 2, -1, 0] #Code to save it to file, each object on a new line
Desired Output:
5 9 2 -1 0
How do I go about doing this?
-
Ashwini Chaudhary over 11 yearsI don't think there's a need of defining such extra function, and opening and closing a file for every item of the list will cost too many I/O operations.
-
Ashwini Chaudhary over 11 yearsThe list contains integers, so the
join()
call will raiseTypeError
here.TypeError: sequence item 0: expected string, int found
-
Ashwini Chaudhary over 11 yearsNo need of those
[]
insidejoin()
, use"\n".join(str(i) for i in your_list)
-
mgilson over 11 yearsWhy
print >>
whenoutfile.write
will work on both py2k and py3k?