如何在python中加快读写二进制文件操作?
How to speed up reading and writing binary file operation in python?
我有一个二进制文件 (400MB),我想首先读取它然后写入另一个文件 python.Currently 我正在做的是非常基础的。
file = 'file.bin'
with open('temp','wb+') as dest:
for chunk in file.chunks():
dest.write(chunk)
这段代码是我想要加速的 Django 应用程序的一部分up.Is有没有其他更好的方法来加速这个操作?
更新:
好吧,为了让事情更清楚一点,我想做的是使用 cv2.VideoCapture(filename) 在 OpenCV 中加载一个内存中的视频文件(二进制数据),我认为从 [=24 开始这是不可能的=] 现在我必须从内存中读取文件并将其写入磁盘,以便 OpenCV 操作可以 performed.Basically 我正在尝试获取视频持续时间以进行验证。
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
经过 hours.But 的折磨后明白了,如果你是新手程序员,我想你无法逃避它。我试图在我的 Django 视图中获取 request.FILES 的路径,以便我可以在 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
更新 June/2020 此方法仅在您的文件大小大于 2.5 Mb.For 文件小于 2.5Mb 时才有效 您需要将此添加到你的 settings.py 文件。
FILE_UPLOAD_HANDLERS = [
'django.core.files.uploadhandler.TemporaryFileUploadHandler',
]
我有一个二进制文件 (400MB),我想首先读取它然后写入另一个文件 python.Currently 我正在做的是非常基础的。
file = 'file.bin'
with open('temp','wb+') as dest:
for chunk in file.chunks():
dest.write(chunk)
这段代码是我想要加速的 Django 应用程序的一部分up.Is有没有其他更好的方法来加速这个操作?
更新: 好吧,为了让事情更清楚一点,我想做的是使用 cv2.VideoCapture(filename) 在 OpenCV 中加载一个内存中的视频文件(二进制数据),我认为从 [=24 开始这是不可能的=] 现在我必须从内存中读取文件并将其写入磁盘,以便 OpenCV 操作可以 performed.Basically 我正在尝试获取视频持续时间以进行验证。
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
经过 hours.But 的折磨后明白了,如果你是新手程序员,我想你无法逃避它。我试图在我的 Django 视图中获取 request.FILES 的路径,以便我可以在 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
更新 June/2020 此方法仅在您的文件大小大于 2.5 Mb.For 文件小于 2.5Mb 时才有效 您需要将此添加到你的 settings.py 文件。
FILE_UPLOAD_HANDLERS = [
'django.core.files.uploadhandler.TemporaryFileUploadHandler',
]