2017-04-20 4 views
1

私は、ボタンを押してビデオをカメラにリモート録画するプログラムを作っています。録画が終わったらビデオファイルを外部に保存します。プログラムが終了してもインクリメントする変数

ビデオファイルの名前を知っている必要があります。ビデオに保存するたびに、ファイル内の数字が増えます。

など。保存する最初の動画はmov_0001です。次に新しい動画を保存するときは、mov_0002

変数を増分する方法はありますか?最後の値が保存されているので保存しますそれをもう一度開くと、前回プログラムが実行されたときの状態になります。

+2

この投稿の唯一の質問に対する回答は**はい**です。それで?高品質の回答を得るには、[最小限の、完全で、検証可能な](http://www.linux.org/)を作成することを含む[高品質の質問](http://stackoverflow.com/help/how-to-ask) /stackoverflow.com/help/mcve)の例です。 –

答えて

2

ファイルメソッドを使用して、次に使用するカウンタを格納できます。

通常のテキストファイルまたはPickleファイルまたはJsonファイルを使用して、ビデオファイル名のカウンタを格納します。

デモ:

酸洗 - ピクルスファイルの値を格納する方法。

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

ピックルファイルから値を抽出する方法。

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

注:1から使用既定値ではない場合。

Documentation of Pickle

Demo of Pickling and Unpickling


彼のファイル名に大きなカウンターを持っていたファイル名を検索します。

  1. は、あなたが今list sort方法やsorted機能を使って、ポイント1からファイルリストのリストをソートos.lidtdir("$Vedio_location_path$")
  2. を使用してビデオファイルを保存した場所からビデオファイルのリストを取得します。
  3. vedioリストから最後のファイル名を取得します。
  4. 名前には特定のパターンがありますので、パターンに従ってスペルされ、使用した最後のカウンタ値を取得します。
  5. カウンタを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. 上記のアルゴリズムを変更して、ファイルが削除された場合にカウンタを取得することもできます。

例えば

私。 ["mov_0001", "mov_0002", "mov_0003", "mov_0004"]ファイルがあるとします。

ii。今度はmov_0003ファイルを削除しましたので、リストは["mov_0001", "mov_0002", "mov_0004"]

iiiです。上記のアルゴリズムによると、カウンタの値は4になりますが、削除されたファイルカウンタを取得するアルゴリズムを変更できます。


関連する問題