gpt4 book ai didi

python - 使用 pyfilesystem 在 python 中创建仅内存文件对象

转载 作者:太空宇宙 更新时间:2023-11-03 17:27:48 25 4
gpt4 key购买 nike

我使用 opencv2 编写了一个运动检测/视频程序,它可以将视频输出保存 x 秒。如果在此期间检测到运动,则输出将另存为备用命名文件,但如果未检测到运动,则该文件将被覆盖。为了避免对基于闪存的内存系统造成不必要的磨损,我想将文件写入 RAM,如果检测到运动,则将其保存到非 volatile 内存中。

我正在尝试使用 pyfilesystem-fs.memoryfs 在 RAM 中创建此文件

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)

这是运动检测部分

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')

os.rename函数返回TypeError必须是字符串,而不是None

我显然错误地使用了内存文件,但找不到任何使用它的示例。

编辑我使用以下行打开文件对象并写入

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

但是这会返回 False ,我不确定,但它似乎无法打开文件对象。

最佳答案

要将文件从 MemoryFS 移动到真实文件系统,您应该读取 orig 文件并将其写入 dest 文件,类似于

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 - 使用 pyfilesystem 在 python 中创建仅内存文件对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32321216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com