【发布时间】:2012-12-02 22:29:40
【问题描述】:
我有一个大约 10,000 行的文本文件。
典型的线条如下所示:
'1 2/1/2011 9:30,ZQZ,200.02,B,500'
如果我运行#1,我可以遍历整个文件,i 将计算文件中的总行数。但是,如果我创建一个字典,在遍历文件时记录每一行中的数据(如 #2 所示),我将完成大约一半。我无法弄清楚为什么会这样。 10,000 行数据是否可能太大而无法包含在字典中?我怎样才能确定这一点?
#1
TheFile = 打开(文件名)
TheFile.next()
i = 0
for l in TheFile:
i += 1
print i
#2
TheFile = open(file_name)
TheFile.next()
thedata = {}
i = 0
for l in TheFile:
i += 1
print i
this_line = TheFile.next()
the_info = this_line.split(',')
the_ticker = the_info[1]
#print type(the_info[1])
#print this_line
if the_ticker not in thedata.keys():
thedata[the_ticker] = {}
thedata[the_ticker]['trade'+ str(len(thedata[the_ticker]) + 1)] =
{'the_trade_number':len(thedata[the_ticker]),
'theTime':the_info[0],
'thePrice':float(the_info[2]),
'theTransaction':the_info[3],
'theQuantity':int(the_info[4])}
问题是#2没有给我任何错误,这就是为什么我无法弄清楚问题是什么
【问题讨论】:
-
哦,顺便说一句,我在运行文件时没有收到任何错误,这就是我无法确定问题的原因。
-
好的,谢谢山姆。我是这个网站的新手。虽然不完全确定我为什么这样做,但我想你知道你在说什么。
-
仅 10,000 行,将占用将近 700KB 的内存。然后是
dict的开销。即使假设这使您达到 1MB,这也不是很多内存。我们真的需要看看你是如何创建这个dict -
感谢@inspectorG4dget。我将尝试以不太令人困惑的方式发布我的代码。还有,你怎么知道10000行会占用700MB内存?
-
sys.getsizeof('1 2/1/2011 9:30,ZQZ,200.02,B,500')返回69字节。从那里开始的简单代数
标签: python file dictionary loops