2017-04-20 65 views
1

我正在制作一个程序,可以通过按钮远程记录相机上的视频,并在完成记录后将视频文件保存到外部。即使程序关闭也会增加的变量

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

E.g.第一个保存的视频是mov_0001,那么下一次我保存一个新的视频它是mov_0002

有没有办法让一个变量增加,它保存在最后一个值是什么,所以即使我关闭程序,再次打开它将会是上一次程序运行的结果?

+2

在这篇文章中唯一的问题的答案是**是**。怎么办?为了得到高质量的答案提供重要的是[高品质问题(http://stackoverflow.com/help/how-to-ask),包括建立一个[最小,完整,可验证](HTTP:/ /stackoverflow.com/help/mcve)示例。 –

回答

2

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

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

演示:

酸洗 - 如何存储泡菜文件值。

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

注:如果不使用默认值1。

Documentation of Pickle

这在他的文件名更大计数器Demo of Pickling and Unpickling


查找文件名。从位置,可以通过使用os.lidtdir("$Vedio_location_path$")

  • 现在通过使用list sort方法或sorted功能排序,从1点文件清单列表存储视频文件

    1. 获取视频文件列表。
    2. 从视频列表中获取最后的文件名。
    3. 由于你的名字有特定的模式,所以按照模式溢出并得到你使用的最后一个计数器值。
    4. 将计数器加1并用于存储下一个视频文件。

    演示:

    >>> 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. 您还可以修改上面的算法,如果任何文件被删除拿到柜台。

    E.g

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

    ii。现在我们删除mov_0003文件,因此名单是["mov_0001", "mov_0002", "mov_0004"]

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


  • 相关问题