Reading a list of lists from a file as list of lis

2020-02-12 06:33发布

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!

标签: python file list
4条回答
爷、活的狠高调
2楼-- · 2020-02-12 06:50

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.

查看更多
▲ chillily
3楼-- · 2020-02-12 07:01

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.

查看更多
太酷不给撩
4楼-- · 2020-02-12 07:03

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)
查看更多
Rolldiameter
5楼-- · 2020-02-12 07: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, ">"
查看更多
登录 后发表回答