前提・実現したいこと
Pythonで、一斉に全ディレクトリ内の
jpgファイルと18秒以下のmp4ファイルを削除するプログラムを
作成したいです。
実行ファイルの位置は⇒ c:\Users\sho\Desktop\4K Stogram\★★★ です。
★★★の位置に実行ファイルと共に
jpg、mp4ファイルの複数入ったディレクトリが沢山ある状況です。
まずはディレクトリのリストを作成するプログラム。
次にjpgを削除するプログラム。
最後に18秒以下のmp4ファイルを削除するプログラム。
これらが完成したので、合わせて再編集してみたのですが、
どうにも上手く動作してくれません。
リストの取得には成功してるのですが、
jpg削除以降のプログラムが上手く動いてくれません。
そもそものプログラムの組み方が間違っているのでしょうか?
どなたか知恵を貸してください!
発生している問題・エラーメッセージ
PS C:\Users\sho> ${env:DEBUGPY_LAUNCHER_PORT}='63064'; & 'C:\Users\sho\AppData\Local\Programs\Python\Python38-32\python.exe' 'c:\Users\sho.vscode\extensions\ms-python.python-2020.4.74986\pythonFiles\lib\python\debugpy\no_wheels\debugpy\launcher' 'c:\Users\sho\Desktop\4K Stogram\Execute all.py' リストの総数:49 ディレクトリ数:43 ディレクトリ一覧:['adamdanyal', 'artventure', 'bestviralposts', 'cool_newtech', 'createvirals', 'creative_technologies', 'cut.the.wood', 'daily_construction', 'dreamonscience', 'drivinghero', 'drsaitozturk', 'electricity', 'electronicsdiy', 'engineer_technology_', 'fbminghuan', 'globalwoodworking', 'ifyouhigh', 'in_creatives', 'mech_home', 'paulbryantv', 'pipesandcreative', 'pouchpanda', 'powervisiongo', 'rising.tech', 'rosie.technology', 'servicegig', 'so.up.high', 'steampunktendencies', 'tech.section', 'techextent', 'tech_collections', 'thdrawing', 'thegiftbazaar', 'totaltoolssouthmelbourne', 'tradectory', 'tv.memari', 'uwoodworkingprojects', 'virals.collections', 'vlog_auto', 'woodworkingideas01', 'worldofartists', 'world_of_engineering', '__pycache__']
該当のソースコード
import glob import os import cv2 ################################################################### ################ ディレクトリのリストを取得するフロー ################ ################################################################### ########## 各変数を定義 ########## path = 'C:/Users/sho/Desktop/4K Stogram' # ディレクトリのリストを作成 folder_lists = os.listdir(path) total_number = len(folder_lists) # 総数 file_lists = [] # リストの初期化 list_number = 0 i=0 # ループ用 ########## ループ ########## for f in folder_lists: if os.path.isdir(os.path.join(path, f)): file_lists.append(f) list_number = len(file_lists) i+=1 if i < total_number: continue else: break else: i+=1 if i < total_number: continue else: break ########## 各値 ########## total_number = len(folder_lists) print('リストの総数:{0}'.format(total_number)) list_number = len(file_lists) print('ディレクトリ数:{0}'.format(list_number)) print('ディレクトリ一覧:{0}'.format(file_lists)) ############################################################### ################ jpgファイルを一括削除するフロー ################ ############################################################## file_lists2 = file_lists # 次フロー用に複製 i = 0 path = 0 # リセット ########## jpegデータを一括取得 ########## file_list= glob.glob("{}/*.jpg".format(file_lists)) # 全jpgファイルのリストを取得 ####### ループ:取得したデータを一括削除 ####### for file in file_list: print("remove:{0}".format(file)) os.remove(file) i += 1 if i < len(file_list): # 全部終わるまでループ continue else: break ####################################################################### ################ ○秒以下のmp4ファイルを一括削除するフロー ################ ####################################################################### file_list = 0 # リセット file_list = glob.glob("{}/*.mp4".format(file_lists2)) # 全mp4ファイルのリストを取得 ########## ループ:動画の名前と尺を抽出 ########## for video_path in file_list: cap = cv2.VideoCapture(video_path) # ビデオを読み込む video_name = os.path.basename(video_path) # 名前を取得 scale = cap.get(cv2.CAP_PROP_FRAME_COUNT) / cap.get(cv2.CAP_PROP_FPS) # 尺を取得 print() print("video_name:{}".format(video_name)) print("scale:{}".format(scale)) cap.release() # 動画を閉じる ########## ③18秒以下なら削除 ########## if scale <= 18: os.remove(video_path)
回答3件
あなたの回答
tips
プレビュー