【Python】特定のファイルを収集する

機能

特定のファイルを収集するPythonプログラムです。

例えば、以下のコマンドを実行するとinputフォルダ配下にあるテキストファイル(.txt)をoutputフォルダにコピーします。

サブフォルダも検索対象です。

python file_collecter.py .txt input output

サンプル動画

youtu.be

プログラム

#! Python3
# 機能
#  特定のファイルを収集する
# 使い方
#  1.Pythonを実行する
# 実行コマンド
#  python file_collecter.py キーワード 検索パス 出力パス
#  python file_collecter.py .txt input output
#  python file_collecter.py テスト input output

import os
import sys
import shutil

if len(sys.argv) != 4:
    sys.exit("使い方:python file_collecter.py キーワード 検索パス 出力パス")

keyword = sys.argv[1]
search_path = sys.argv[2]
output_path = sys.argv[3]

# 出力フォルダを作成する
os.makedirs(output_path, exist_ok=True)

# サブフォルダも含めて検索する
for folder_name, _, file_names in os.walk(search_path):
    for file_name in file_names:
        # キーワードが含まれないファイルは対象外
        if keyword.lower() not in file_name.lower():
            continue

        # 対象ファイルをコピーする
        file_path = os.path.join(folder_name, file_name)
        print("Copying {}...".format(file_path))
        shutil.copy(file_path, output_path)

使い方

  1. Pythonを実行する

コマンド

実行コマンド

python file_collecter.py キーワード 検索パス 出力パス
python file_collecter.py .txt input output
python file_collecter.py テスト input output

パスは相対パスでも絶対パスでも指定可能です。

実行環境

プログラム実行時の環境は以下になります。

開発環境については以下を参考にして下さい。

stmtk358.hatenablog.com

プログラムのバッチ化については以下を参考にして下さい。

stmtk358.hatenablog.com

exeファイル

Python環境がなくても実行可能なexeファイルもあります。

とりあえず試してみたい方は以下からダウンロードして下さい。

github.com

実行方法

コマンドラインから以下のコマンドを実行して下さい。

file_collecter.exe キーワード 検索パス 出力パス
file_collecter.exe .txt input output
file_collecter.exe テスト input output

GitHub

今回使用したプログラムやテストデータはGitHubにアップロードしています。

github.com

参考文献

www.oreilly.co.jp