Richa Sachdev
Richa Sachdev

Reputation: 3057

Reading a list of lists from a file as list of lists in python

I collected data in the form of list of lists and wrote the data into a text file. The data in the text file looks like

[[123231,2345,888754],[223467,85645]]

I want to read it back and store in a list of lists in my program. But when I do read() from the file and try creating a flat list then it takes everything as a string and the interpretation changes totally and i am not able to query the result I get after reading as normal list of lists in python.

Can someone help me with reading the file and storing in the same format as list of lists?

Thank you!

Upvotes: 8

Views: 18096

Answers (4)

Michael
Michael

Reputation: 11

Make sure that:

  • the file that the list data is in is a python file
  • the list data is assigned to a variable
  • the file is in a python module

You can then import the list from the python file. For example say that list, my_list, is in the file mylist.py

E.g:

# This is the file mylist.py
my_list = [[123231,2345,888754],[223467,85645]]

You can then treat my_list as a python list

from mylist import my_list

for item in mylist:
   print "item = <", item, ">"

Upvotes: 1

Thanasis Petsas
Thanasis Petsas

Reputation: 4448

Also you can use eval to achieve this, but the other solutions maybe better:

# reading a list from a file
f = open('data.txt', 'r')
l = eval(f.read())

# storing a list to a file
outf = open('out','w')
outf.write(str(l))

Sometime using eval is a bad practice. For more information check this post.

Upvotes: 2

fraxel
fraxel

Reputation: 35269

You could just pickle your data instead. To save it:

>>> import pickle
>>> p= [[123231,2345,888754],[223467,85645]]  
>>> with open("data.txt", "wb") as internal_filename:
...     pickle.dump(p, internal_filename)

To load it:

>>> with open("data.txt", "rb") as new_filename:
...     pp = pickle.load(new_filename)
>>> pp
[[123231, 2345, 888754], [223467, 85645]]

This is also useful for much more elaborate objects.

Upvotes: 2

Tim Pietzcker
Tim Pietzcker

Reputation: 336108

This looks like valid JSON.

So you can simply do:

import json
with open(myfilename) as f:
    lst = json.load(f)

To store your "list of lists" in a file, do

with open(myfilename, "w") as f:
    json.dump(lst, f)

Upvotes: 9

Related Questions