9
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

大量のファイルをフォルダーに整理

Last updated at Posted at 2014-04-15

いきさつ

格安監視カメラを導入した際に、画面内に変化があると動体検知が働いてその画像を任意のFTPサーバにアップロードする設定を行った。
動体検知のしきい値がいい感じに敏感で太陽の動きやちょっとしたショックでバシャバシャ撮影してアップロードしまくる。アップロード先は任意のPathなので、同一階層に何万ファイルも貯まることになってしまった。

対策

年月くらいのフォルダーに分散してくれると嬉しいなぁってことで、ファイル名を参考に、フォルダー掘ってひたすら移動するだけのスクリプトをこしらえることにした。

コード

python


#!/usr/bin/env python
#coding:utf-8

import os
import shutil

JPG_FILE_LIST = []
TGT_FILE_TYPE = '*.jpg'

# JPGファイルの一覧作成
# 特定拡張子のファイル名だけ取得
def get_filename_only_ext(ext_str="*.jpg"):
  import glob
  global JPG_FILE_LIST
  file_list = glob.glob(ext_str)
  JPG_FILE_LIST = file_list
  #for file in file_list:
  #  print(file)
get_filename_only_ext( TGT_FILE_TYPE )
print JPG_FILE_LIST


def main():
  # 1行毎にファイル名抜き出す
  for cur_file in JPG_FILE_LIST:
    print cur_file
    ## ファイル名から移動先フォルダ名生成
    # sample_file_name : IPC_IPCamera_14_1_23_22_55_38.jpg
    fn = cur_file.split("_")
    dist_folder = "20" + fn[2] + "-" + "%02d"%int(fn[3])

    ## 移動先のフォルダー存在を確認する
    ## # フォルダーがない場合には作成する
    if False == os.path.exists( dist_folder ):
      os.mkdir( dist_folder )
      print "make dir: ", dist_folder

  ## 移動先のフォルダーに移動する
    else:
      shutil.move(cur_file, os.path.join( dist_folder, cur_file))
      print "move : ", cur_file


if __name__ == '__main__':
  main()
  print 'done'

その後

sakuraのレンサバで動かそうと思ったら
色々import出来ずに動かせていない orz

9
12
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?