質問: csvファイルを読み込むときにどうすれば自動で読み込めますか? ![画像の説明をここに入力](https://i.stack.imgur.com/hsGQo.jpg) 現在inputから手動で一つ一つ入力しています。 もし、ファイル名に規則性があり、001.csv, 002.csvのようならば簡単なのですが、 不規則なのでどうすれば、まとめて読み込めるのかわかりません。
回答: 以下の3パターンくらいが考えられるでしょう。 **プログラムをコマンド化して起動時に対象ファイルを引数で指定できるようにする** 対象ファイルの検索や指定は呼び出す側のプログラム(シェルやコマンドプロンプト)に任せる コマンド化はこんな記事 pythonファイルの実行の自動化 Pythonでコマンドライン引数を扱う方法(sys.argv, argparse) `sys.argv`を使う 呼び出す側はこんな記事 シェルスクリプトのforループでフォルダやファイルを一括処理 for(バッチファイルで繰り返し処理をする) **処理対象ファイル名リストをテキストファイル化し、それを読み込んでループする** 1行1ファイルでも、それ自体をcsvでも良いが、それに応じた読み込み処理を行う 例えばこんな記事でファイルからリスト作成 python でファイルを read してリストにする時に、改行コードを入れない 読み込んだリストを`for`ループで回す 必要ならば処理したくないファイルが表示されたときにスキップする処理などを組み込む(下記には入れていない) ``` for reading in filelist: print('read file from:' + reading) writing = input('put the file you want to write:') ex(reading, writing) ``` **`pathlib`や`glob`等で自分で検索する** この辺の記事を応用してファイル名を取得 pathlib --- オブジェクト指向のファイルシステムパス Python, pathlibでファイル一覧を取得(glob, iterdir) デスクトップにあるcsvファイル名「fm_data20??*??*??」を検索してリネームさせたい ``` filelist = pathlib.Path('.').glob('*.csv') ``` とか ``` filelist = glob.glob(r'C:\Data\*.csv') ``` 上記同様、読み込んだファイル名を`for`ループで回す