Skip to main content
 首页 » 编程设计

python之将文件内容放在列表中

2024年10月01日8shangdawei

我有一个文本文件需要存储在列表中。

文件:

1 1 
4 2 
9 10 

我想要一个对象列表。 L = [obj obj obj]

代码:

def putInList(pathToFile): 
     myList = [] 
     with open(pathToFile) as f: 
         for line in f: 
             s = line.split() 
             x, y = [int(v) for v in s] 
             jemand = Mensch(x, y) 
             myList.append(jemand) 
     return myList 

这很好用! 我的问题是我访问了 DISK MEMORY 行数!

这个样本是人造的,我将使用更大的文件。所以我写了一个切片器,将它们放入 ~100MB .txt 文件中。所以我想把它们放在一个 list 中,而不用访问 disk memory 百万次。

在 StackOverFlow 上搜索和其他问题后,我找到了这段代码:

a = open(fileToPath, 'r') 
L = [line for line in a.readlines()] 

但我不知道如何解析列表?

请您参考如下方法:

你的假设是错误的,你不会访问磁盘内存 $lines 次。缓冲处理这个问题。

不过我可以提出一些建议。您的线路拆分逻辑比需要的更复杂。使它(在我看来)更清晰的一种方法是:

x, y = map(int, line.split()) 

这样您就不会不必要地创建一个随后立即被丢弃的列表。

如果稍后遍历 myList,并且只执行一次,则可以完全删除列表,并改用生成器函数:

def putInList(pathToFile): 
     with open(pathToFile) as f: 
         for line in f: 
             x, y = map(int, line.split()) 
             yield Mensch(x, y) 

然后您可以使用 for mensch in putInList(filename): 对其进行迭代,尽管在这种情况下您可能希望重命名该函数。如果您仍然需要列表,我会不顾一切地使用 myList = list(putInList(filename)) 获取列表。