我有一个二进制文件(400MB),我首先要读取,然后再用python将其写入另一个文件。目前我正在做的事情很基本。
file = 'file.bin'
with open('temp','wb+') as dest:
for chunk in file.chunks():
dest.write(chunk)
此代码是我想加速的Django应用程序的一部分。是否还有其他更好的方法来加速此操作?
更新:好了,为了使事情更加清楚,我正在尝试使用cv2.VideoCapture(filename)在OpenCV中加载内存中的视频文件(二进制数据),我认为目前是不可能的。所以现在我必须从内存读取文件并将其写入磁盘,以便可以执行OpenCV操作。基本上,我正在尝试获取视频时长以进行验证。
import cv2
cap = cv2.VideoCapture(dest.name)
fps = cap.get(cv2.CAP_PROP_FPS)
frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
duration = frame_count/fps
经历了几个小时的痛苦后得到了。但是,如果您是一名新手程序员,我想您将无法幸免。我试图获取OpenCV VideoCapture中发布文件的路径。所以这就是我的做法。
file = request.FILES['filename'].file
cap = cv2.VideoCapture(file.name)
fps = cap.get(cv2.CAP_PROP_FPS)
frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
duration = frame_count/fps
2020年6月更新仅当文件大小大于2.5 Mb时,此方法才适用。对于小于2.5Mb的文件,需要将其添加到settings.py文件中。
FILE_UPLOAD_HANDLERS = [
'django.core.files.uploadhandler.TemporaryFileUploadHandler',
]