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()) 
  • Sichere Anmeldeinformationen in Python
  • Python Django Globale Variablen
  • Pypy Speicherverbrauch wächst für immer?
  • Thread-Speicherverbrauch nimmt weiter zu
  • Python: Berechnen pariwise Distanzen verursacht Speicherfehler
  • Umkehren Sie die Liste bei der Erstellung
  • Python MemoryError: Array-Speicher kann nicht zugewiesen werden
  • Pandas lesen csv aus Speicher
  • PyAudio Speicherfehler
  • Die Zugriffszeit eines numpy-Arrays wird im Vergleich zum zweiten Letzteren viel mehr durch den letzten Index beeinflusst
  • Wie kann ich den Python-Speicherfehler debuggen?
  • Python ist die beste Programmiersprache der Welt.