2017年6月1日木曜日

ファイルを分別するプログラム python

ファイル名にキーワードが含まれている場合、そのキーワード名のフォルダにファイルを移動するプログラムをpython で作りました。

たとえば、キーワードを 世田谷区、千代田区、新宿区などを選ぶと、

「世田谷区」というキーワードがファイル名に含まれている場合は、そのファイルを世田谷区フォルダに移動します。

自分の場合、ファイル名に住所が含まれている場合、分別するのにこのプログラムを利用しました。

# coding: utf-8

import os
import shutil

def file_move(file,area):
        if file.find(area) != -1:
            print(area)
            try:
                _path = './'+ area + '/' +file
                if ( file != area) and (os.path.exists(_path) == False):
                    print(os.path.exists(_path))
                    print(shutil.copy2(file,_path))
                    print('コピー成功')
                    os.remove(file) #元ファイルを削除する。削除しない場合はここをコメントにすればいい
            except:
                print('エラー発生,'+ file)

def make_dir(areas):
    for area in areas:
        if not os.path.exists(area):
            os.mkdir(area)
            print(area + 'フォルダ作成成功')


files = os.listdir('./')
areas = ['世田谷区','千代田区','新宿区','墨田区','大田区'] #このリストのフォルダを作成し、ファイルを分別する。キーワードを変更したい場合は、このリストを書き換えればOK

make_dir(areas)

for file in files:
    print('file = ' + file)

    for area in areas:
        file_move(file,area)


という感じです。
このプログラムを実行すると、まず、世田谷区、千代田区、などのフォルダが作成され、
カレントディレクトリにあるファイルのファイル名に世田谷区というキーワードが含まれている場合、ファイルが世田谷区フォルダに移動します。

すでに、キーワード名のフォルダが存在する場合は、フォルダを作成しません。
キーワード名のフォルダ内にすでに、同じファイル名のファイルがある場合は、上書きしませんし、元ファイルは移動しません。

areas リストを書き換えれば、いろんなファイル名の分別に利用できます。

0 件のコメント:

コメントを投稿