在一个循环中分配增量文件名

Assigning incremental filenames within a cycle

我有一个函数可以拍摄图像并为其指定文件名。该函数是获取多个图像文件的循环的一部分:

def cameracycle(self):
    print "cam cycle start"
    self.capture(30)
    print "cam cycle sleep"
    sleep(270)
    print "cam cycle second capture"
    self.capture(30)

def capture (self,length):
    self.camera.start_recording('1.h264')   
    self.camera.wait_recording(length)          
    self.camera.stop_recording()            

每次调用 'capture' 程序都会覆盖文件“1.h264”。怎么写才能让文件名递增?

谢谢!

您可以使用全局变量 video_count 来跟踪下一个数字。

video_count = 0
def capture (self,length):
    video_count+=1
    self.camera.start_recording(str(video_count) + '.h264')   
    self.camera.wait_recording(length)          
    self.camera.stop_recording() 

您可能会发现将其作为函数的属性会更简洁,如下所示:

def capture (self,length):
    capture.video_count+=1
    self.camera.start_recording(str(video_count) + '.h264')   
    self.camera.wait_recording(length)          
    self.camera.stop_recording() 
capture.video_count = 0

您可以使用全局变量:

currentid = 0

def capture(self, length):
    global currentid
    currentid += 1
    self.camera.start_recording(str(currentid) + '.h264')
    ...

您可以通过这种方式向您的 class 添加一个捕获计数器:

class MyClassName(object):

    counter = 0

    def cameracycle(self):
        print "cam cycle start"
        self.capture(30)
        print "cam cycle sleep"
        sleep(270)
        print "cam cycle second capture"
        self.capture(30)

    def capture (self,length):
        MyClassName.counter += 1
        self.camera.start_recording('{}.h264'.format(MyClassName.counter)) 
        self.camera.wait_recording(length)          
        self.camera.stop_recording()