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)))
Share:
11,682
Rushy Panchal
Author by

Rushy Panchal

Updated on June 17, 2022

Comments

  • Rushy Panchal
    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
    Ashwini Chaudhary over 11 years
    I 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
    Ashwini Chaudhary over 11 years
    The list contains integers, so the join() call will raise TypeError here. TypeError: sequence item 0: expected string, int found
  • Ashwini Chaudhary
    Ashwini Chaudhary over 11 years
    No need of those [] inside join(), use "\n".join(str(i) for i in your_list)
  • mgilson
    mgilson over 11 years
    Why print >> when outfile.write will work on both py2k and py3k?