Как ускорить операцию чтения и записи двоичного файла в python? - PullRequest
0 голосов
/ 17 июня 2020

У меня есть двоичный файл (400 МБ), который я хочу сначала прочитать, а затем записать в другой файл в python. В настоящее время я делаю очень простые c.

file = 'file.bin'
with open('temp','wb+') as dest:
    for chunk in file.chunks():
        dest.write(chunk)

Этот код является частью моего Django приложения, которое я хочу ускорить. Есть ли другой лучший способ ускорить эту операцию?

Обновление: Хорошо, чтобы что-то сделать немного более понятно, что я пытаюсь сделать, это загрузить видеофайл в памяти (двоичные данные) в OpenCV с помощью cv2.VideoCapture (filename), что, как мне кажется, на данный момент невозможно, поэтому теперь я должен прочитать файл из памяти и записать его на диск, чтобы можно было выполнить операцию 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

1 Ответ

0 голосов
/ 17 июня 2020

Получил это после нескольких часов мучений, но если вы новичок ie программист, я думаю, вам не избежать этого. Я пытался получить путь к опубликованному файлу в 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 Этот метод будет работать, только если размер вашего файла больше 2,5 Мб. Для файлов меньше 2,5 Мб вам потребуется чтобы добавить это в свой файл settings.py.

FILE_UPLOAD_HANDLERS = [
    'django.core.files.uploadhandler.TemporaryFileUploadHandler',
]
...