gpt4 book ai didi

python - 如何在自定义 Django 上传处理程序中逐行读取?

转载 作者:太空宇宙 更新时间:2023-11-04 05:30:59 26 4
gpt4 key购买 nike

我正在处理 SDF files (~多个 GB)并想要计算每个分子中的分子数并将其存储在数据库中。现在,我在文件上传后将它作为一个单独的循环来执行,但这意味着要额外迭代一次文件,这需要很长时间,并且是在文件上传后完成的,因此不会向用户提供任何进度信息。

我的计划是在自定义上传处理程序中计算等于:$$$$ 的行数,然后将该数字以某种方式放在模型上并保存模型。不过,我对 Python 还是很陌生,当我意识到我得到了一大块数据并且找不到从上传中逐行读取的好方法时,我完全被难住了。 Django 中是否已经有一些 Handler 可以逐行读取我可以使用或者我必须自己制作?如果我必须自己制作,考虑到总数据量很大,我应该使用哪种数据结构作为本地缓存以使其在我的处理程序中保持快速?

这是我目前所拥有的::)

class CountSDFEntries(FileUploadHandler):
def receive_data_chunk(self, raw_data, start):
return raw_data

def file_complete(self, file_size):
return None

最佳答案

我最终得到了这段代码:

class CountSDFEntries(FileUploadHandler):

def __init__(self, request, datasetModel):
FileUploadHandler.__init__(self, request)
self.datasetModel = datasetModel

cache = ""
numofmols = 0
datasetModel = None;

def receive_data_chunk(self, raw_data, start):
self.cache += raw_data
lines = self.cache.splitlines()
self.cache = lines[-1]
del lines[-1]
for line in lines :
if line.rstrip() == "$$$$":
self.numofmols += 1
return raw_data

def file_complete(self, file_size):
#The last line is still in the cache, so + 1
self.datasetModel.numberOfMols = self.numofmols + 1
return None

但是,文件上传后还有很长的等待时间,我现在想知道是否可能是 Django 将文件从 /tmp/ 移动到文件应该在的位置结束。所以这并没有真正解决我在文件上传后等待时间过长的问题。 :(

关于python - 如何在自定义 Django 上传处理程序中逐行读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37141929/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com