Ein Gedächtnis nur fileobject in python mit pyfilesystem

Ich habe ein Bewegungserkennungs- / Videoprogramm mit opencv2 geschrieben, das die Videoausgabe für x Sekunden speichert. Wenn während dieser Zeit eine Bewegung erkannt wird, wird die Ausgabe als abwechselnd benannte Datei gespeichert, aber wenn keine Bewegung erkannt wird, wird die Datei überschrieben. Um unnötigen Verschleiß auf einem Flash-basierten Speichersystem zu vermeiden, möchte ich die Datei in den RAM schreiben, und wenn die Bewegung erkannt wird, dann speichern Sie sie in den nichtflüchtigen Speicher.

Ich versuche, diese Datei im RAM mit pyfilesystem-fs.memoryfs zu erstellen

import numpy as np import cv2, time, os, threading, thread from Tkinter import * from fs.memoryfs import MemoryFS class stuff: mem=MemoryFS() output = mem.createfile('output.avi') rectime=0 delay=0 kill=0 cap = cv2.VideoCapture(0) #out = cv2.VideoWriter('C:\motion\\output.avi',cv2.cv.CV_FOURCC('F','M','P','4'), 30, (640,480),True) out = cv2.VideoWriter(output, cv2.cv.CV_FOURCC('F','M','P','4'), 30, (640,480),True) 

Dies ist der Bewegungserkennungsteil

 if value > 100: print "saving" movement=time.time() while time.time()<int(movement)+stuff.rectime: stuff.out.write(frame) ret, frame = stuff.cap.read() if stuff.out.isOpened() is True: stuff.out.release() os.rename(stuff.output, 'c:\motion\\' + time.strftime('%m-%d-%y_%H-%M-%S') + '.avi') 

Die os.rename-Funktion gibt TypeError must be string, not None

Ich bin eindeutig mit memoryfs falsch, kann aber keine Beispiele für seine Verwendung finden.

EDIT Ich benutze die folgende Zeile, um das Dateiobjekt zu öffnen und darauf zu schreiben

 stuff.out.open(stuff.output, cv2.cv.CV_FOURCC(*'FMP4'),24,(640,480),True) 

Aber das gibt False , ich bin mir nicht sicher, aber es scheint, dass es das Dateiobjekt nicht öffnen kann.

One Solution collect form web for “Ein Gedächtnis nur fileobject in python mit pyfilesystem”

Um Ihre Datei Formular MemoryFS zu echten Dateisystem zu verschieben, sollten Sie orig Datei lesen und schreiben Sie es auf Datei, so etwas wie

 with mem.open('output.avi', 'b') as orig: with open('c:\\motion\\' + time.strftime('%m-%d-%y_%H-%M-%S') + '.avi')) as dest: dest.write(orig.read()) 
  • Python: Wie man große Textdatei in den Speicher liest
  • Gedächtnisverlust mit Pandas dataframe
  • Speicher für python.exe auf Windows 7 python 32 - Numpy verwendet nur die Hälfte des verfügbaren Speichers?
  • Erweiterung der Session Middleware
  • Python: Speicherverbrauchsstatistiken pro Objekttypen (oder Quellcodezeile)
  • Wie funktioniert App-Engine (Python) Speicher über Anfragen (überschrittene Soft-Private-Memory-Grenze)
  • Umkehren Sie die Liste bei der Erstellung
  • Python MemoryError oder ValueError in np.loadtxt und iter_loadtxt
  • Ungefähr wie viel Speicher würde eine Liste von 80000 Artikel in Python verbrauchen?
  • Python große variable RAM-Nutzung
  • Die effizienteste Möglichkeit, die Liste der ganzen Zahlen zu speichern
  • Python ist die beste Programmiersprache der Welt.