我写了一个程序下载应用程序,电影和其他。但是当我运行它时会出现以下错误:
Traceback (most recent call last):
File "tidopy.py", line 27, in <module>
data=urllib2.urlopen(addresslist[x]).read()
File "C:\Python27\lib\socket.py", line 362, in read
buf.write(data)
MemoryError: out of memory
我认为这个错误是关于这个代码的:
^{pr2}$数据是一个变量,用于下载电影和其他数据
文件就是文件
以及文件.写入(data)将数据放入文件中
tidopy是我的程序名。。在
我怎样才能修好它?在
救命啊。在
看起来你从一个url下载文件并将其写入一个文件,但在此期间,你希望
data
保存整个文件,这发生在你的计算机内存(pagefile的RAM)中,当文件很大(比如电影)时,内存就会耗尽。在解决方案是在下载时写入每个文件块,而不是将整个文件加载到内存中,然后再写入。我有一个小代码可以做到这一点,如果你想使用它:
如果您注意到了,我已经设置了}中的下载量达到1%时,它就会写入文件,然后被下一个1%的数据替换,因此它总是占用内存中存储的数据的1%。如果您正在下载的文件太大,甚至无法处理内存中的1%,则应将
chunk_size = total_length / 100
,这意味着每当{chunk_size
替换为固定的字节数,可能是1000000(大约为1MB)相关问题 更多 >
编程相关推荐