[Python] 266 globによるパス一覧からの選別

久しぶりにPythonをいじりました。最近は融通の効かないJavaを使いこなすことにやりがいを感じていましたが、Pythonの自由さもいいものです。

globメソッドで得られたCSVファイルのパス一覧から、ファイル内容が条件に合致するパスのリストを作成しようとしたところ、エラーになってしまう問題にぶつかりました。さすがにそこまで柔軟ではないようです。

仕方ないのでパスをprint関数でtxtファイルに追記出力しました。

# 競走馬個別ファイル内の競走馬名が幼名("XXXの2018"など)になっているファイルのパスリストを作成
import glob,os,re,sys
import pandas as pd

print("検索する年度を入力してください")
year = input()

path = f'/horse/{year}'
print(os.listdir(path))

# 数字が含まれているディレクトリ名をリスト化する
pattern = r'\d'
list_dir = [p for p in os.listdir(path) if re.compile(pattern).search(p)]
print(list_dir)

for dir in list_dir:
    for path in glob.glob(f'/horse/{year}/{dir}/*.csv'):
        df = pd.read_csv(path,header = None,encoding='shift_jis')
        
        # B1セル相当の文字列に数字が含まれている場合、ファイルパスを追記出力する
        if re.compile(pattern).search(df.iat[0,1]):
            print(df.iat[0,1])
            with open('未登録馬path.txt', 'a') as f:
                print(path, file = f)
                # list.append(path)は不可なのでこのような処理になった