如何在python中加快读写二进制文件的操作?

问题描述 投票:-2回答:1

我有一个二进制文件(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
python django performance opencv read-write
1个回答
0
投票

经历了几个小时的痛苦后得到了。但是,如果您是一名新手程序员,我想您将无法幸免。我试图获取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',
]
    
© www.soinside.com 2019 - 2024. All rights reserved.