本記事では、Pythonを使ってディレクトリ内にある複数のファイルからランダムに抽出して別のディレクトリにコピーする方法を解説します。
機械学習、AIをやっていると全体の何%かを抽出してきてデータの確認をすることがちょこちょこあったので、Pythonでランダムに抽出するコードを作ってみました。
実行環境
Python 3.8.3
Windows10 Home
ディレクトリ構成
Pythonというディレクトリの下にinディレクトリ内にある複数のファイルからランダムに抽出して別のディレクトリにコピーするrandom_sample.pyというファイルがあります。
out/choiceディレクトリがinディレクトリからランダムに抽出されたファイルをコピーする先のディレクトリです。
Python
│ random_sample.py
│
├─in
│ 1.txt
│ 2.txt
│ 3.txt
│ 4.txt
│ 5.txt
│ 6.txt
│ 7.txt
│ 8.txt
│ 9.txt
│ 10.txt
└─out
└─choices
ディレクトリ内にある複数のファイルからランダムに抽出して別のディレクトリにコピーするコード
SAMPLING_RATIOを調整することで抽出するファイル数を変更することができます。
今回は全ファイル数の30%を抽出するように設定しています。
ファイル数が10個なので、ランダムに3個抽出されます。
拡張子も今回は.txtでやっていますが、jpg、csvに変えるなどすればいろいろなファイルを対象に使うことができます。
import glob
import random
import os
import shutil
import math
INPUT_DIR = 'in'
OUTPUT_DIR = 'out'
#ランダムで抽出する割合
SAMPLING_RATIO = 0.3
def random_sample_file():
files = glob.glob(INPUT_DIR + '/*.txt')
random_sample_file = random.sample(files,math.ceil(len(files)*SAMPLING_RATIO))
os.makedirs(OUTPUT_DIR + "/choices",exist_ok=True)
for file in random_sample_file:
shutil.copy2(file,OUTPUT_DIR + "/choices/")
if __name__ == '__main__':
random_sample_file()
実行結果
10個の中から3つのファイルをランダムに抽出することができました。
Python
│ random_sample.py
│
├─in
│ 1.txt
│ 2.txt
│ 3.txt
│ 4.txt
│ 5.txt
│ 6.txt
│ 7.txt
│ 8.txt
│ 9.txt
│ 10.txt
└─out
└─choices
2.txt
5.txt
8.txt
おすすめのPython学習本はゲームを作りながら楽しく学べるPythonプログラミング です。
ゲーム作りながらPythonを楽しく学べるので、挫折しにくいです。
コメント