即使程序关闭也会递增的变量

时间:2017-04-20 05:59:19

标签: python raspberry-pi counter

我正在制作一个程序,可以通过按下按钮在相机上远程录制视频,并在我完成录制后将视频文件保存到外部。

我需要知道要访问它的视频文件的名称,每次视频保存时,文件中的数字都会增加。

E.g。第一个保存的视频是mov_0001,然后下次保存新视频时它的mov_0002

有没有办法让变量递增,并且它保存在最后一个值的任何位置,所以即使我关闭程序并再次打开它,它将是上一次程序运行的时间?

1 个答案:

答案 0 :(得分:2)

您可以使用文件方法存储下一个使用哪个计数器。

使用普通文本文件或Pickle文件或Json文件来存储视频文件名的计数器。

<强>演示:

酸洗 - 如何在pickle文件中存储值。

>>> import pickle
>>> store_file = "file_counter.txt"
>>> counter = 10
>>> fp = open(store_file, "w")
>>> pickle.dump(counter, fp)
>>> fp.close()

Unpickling-如何从pickle文件中提取值。

>>> fp_r = open(store_file, "r")
>>> old_counter = pickle.load(fp_r)
>>> old_counter
10
>>> 

注意:如果没有,请使用默认值。

Documentation of Pickle

Demo of Pickling and Unpickling

查找文件名中包含更多计数器的文件名。

  1. 使用os.lidtdir("$Vedio_location_path$")
  2. 从您存储视频文件的位置获取视频文件列表
  3. 现在使用list sort方法或sorted函数对第1点的文件列表进行排序。
  4. 从vedio列表中获取最后一个文件名。
  5. 由于您的名字有特定的图案,因此根据图案溢出并获得您使用的最后一个计数器值。
  6. 将计数器递增1并用于存储下一个视频文件。
  7. <强>演示:

    >>> video_files = ["mov_0001", "mov_0002", "mov_0005", "mov_0003"]
    >>> video_files.sort()
    >>> video_files
    ['mov_0001', 'mov_0002', 'mov_0003', 'mov_0005']
    >>> last_file = video_files[-1]
    >>> counter = int(last_file.split("_")[1])
    >>> counter
    5
    

    注意:

    1. 进行必要的异常处理。
    2. 使用默认值为1,商店位置不存在视频文件。
    3. 如果删除了任何文件,您还可以修改上述算法以获取计数器。
    4. E.g

      我。假设有["mov_0001", "mov_0002", "mov_0003", "mov_0004"]个文件。

      II。现在我们删除了mov_0003文件,因此列表为["mov_0001", "mov_0002", "mov_0004"]

      III。根据上述算法,使用的计数器值为4,但是您可以修改算法以获取已删除的文件计数器。