#目的
Pythonを用いて、
大量の画像が含まれたフォルダの中から使用する画像だけを一括で抽出したい。
抽出したい画像のファイル名が
ExcelファイルやCSVファイルの"filename"列に書かれているものとする。
#本記事について
この記事はPython初心者に向けて掲載しています。
これを参考にすればタイトルのようなことがすぐにできるようになっています。
#コード全体
import os
import shutil
import pandas as pd
src_dir = ("抽出元のフォルダのパス")
dst_dir = ("抽出先のフォルダのパス")
# 表データ読み込み
df = pd.read_csv("data.csv")
# df = pd.read_excel("data.xlsx") Excelファイルの場合
# filename列の読み込み
filenames = df["filename"]
# 各画像を個別にsrc_dirからdst_dirにコピー
for f in filenames:
src_path = os.path.join(src_dir, f)
dst_path = os.path.join(dst_dir, f)
if os.path.isfile(src_path):
shutil.copy(src_path, dst_path)
###ライブラリのimport
最初にライブラリをimport
しておきましょう。
これは既に構築済みのプログラムを呼び出すことができます。
import
すればコードを簡略化することができます。
pandasは表データを扱うためのライブラリです。
今回はExcelファイルやCSVファイルを読み込むのに使用しています。
shutil
はファイルのコピーに使用しています。
os
はファイルやフォルダの操作に向いていて、ファイルの存在確認やパスを扱う際に使用しています。
import os
import shutil
import pandas as pd
###ファイル名の読み込み
CSVファイルはpd.read_csv('data.csv')
で読み込めます。
Excelファイルはpd.read_excel('data.xlsx')
で読み込めます。
かっこの中はそれぞれ利用したいファイル名に変更しましょう。
CSVファイルやExcelファイルを読み込んだ後、列名(今回はfilename)を指定して読み込みましょう。
# 表データ読み込み
df = pd.read_csv("data.csv")
# df = pd.read_excel("data.xlsx") Excelファイルの場合
# filename列の読み込み
filenames = df["filename"]
###抽出元、抽出先の指定
src_dir
は大量の画像が含まれたフォルダのパス、
dst_dir
はコピー先のフォルダのパスをそれぞれ指定しましょう。
ちなみにsrcはsourceの略、dstはdestinationの略です。
src_dir = ("抽出元のフォルダのパス")
dst_dir = ("抽出先のフォルダのパス")
###画像のコピー
for文で各画像のコピーをしていきます。
os.path.join(src_dir, f)
は抽出元のフォルダパスと各画像のファイル名を結合し、
画像ファイルのパスにしています。
dst_path = os.path.join(dst_dir, f)
は抽出先のパスです。
os.path.isfile(path)
はファイルの存在確認のためにしています。
if os.path.isfile(path): shutil.copy(src_path, dst_path)
でsrc_path
にdst_path
がなければコピーするというコードになっています。
# 各画像を個別にsrc_dirからdst_dirにコピー
for f in filenames:
src_path = os.path.join(src_dir, f)
dst_path = os.path.join(dst_dir, f)
if os.path.isfile(src_path):
shutil.copy(src_path, dst_path)
#まとめ
私たちは普段、上述したようなコードを使用しファイルを抽出しています。
Pythonを用いることができれば手作業で数時間かかるようなことも数分あれば出来てしまいます。
ぜひ、短縮できた時間の有効活用してください。