将大文件放入列表中

问题描述:

我想知道如何将一个非常大的文件放入列表中?代码我只适用于小文件:将大文件放入列表中

def populate_director_to_movies(f): 
    ''' 
    (file open for reading) -> dict of {str: list of str} 
    ''' 

    movies = [] 
    line = f.readline() 

    while line != '': 
     movies.append(line) 
     line = f.readline() 

当我使用这个非常大的文本文件时,它只是一个空格。

+0

'f.readlines()'不完全一样的东西 – jamylak 2013-04-04 02:48:57

+0

如果文件过大存储在内存中,没有将其存储在内存中。为什么你需要存储整个事情? – Blender 2013-04-04 02:49:01

+0

该档案有一个骑乘(0-307)和一定数量的政党被选中。我正在努力的计划..我必须选择一个骑马,并在每个文件中退还各方的金额。各方是N,L,C和G,骑马有一堆。所以,我想我会把它变成一本字典,而关键是骑马,价值将成为政党。{骑术14:N,L,G,C,N,N,C,G,L ,C,LC}。 – 2013-04-04 02:55:48

为什么不使用Python的with语句?

def populate_director_to_movies(f): 
    with open(f) as fil: 
     movies= fil.readlines() 

或者如果文件对于内存来说太大,请使用文件迭代器来完成。

def populate_director_to_movies(f): 
    movies = [] 
    with open(f) as fil: 
     for line in fil: 
      movies.append(line) 
+0

我不是非常熟悉with语句,但对于大文件,可以写为: DEF populate_director_to_movies(F): '' ' (文件打开用于读取) - > {STR:STR的列表}的字典 ''' 电影= [] F =开('f.txt') for line in f: movies.append(line) line = f.readline() – 2013-04-04 03:09:48

+0

我不确定你想要做什么,但那是行不通的。我编辑了我的答案,以澄清如何逐行添加到电影列表 – 0xff0000 2013-04-04 03:44:40

如果文件很大,则遍历该文件(或创建一个生成器)并处理该行。
喜欢的东西:

for line in f: 
    process_line(line)