フォルダ中のファイル一覧を取得してcsvファイルに出力 [Pythonチートシート]

Python

Pythonを使っていると複数のコードで共通して使用しているコードがあることに気付きます。その作業を完全に覚えていればいいのですが毎回ウェブで調べてコードを記述して、とすると目的の作業は同じなのにシートごとにコード記述方法が違ってしまい見にくくなってしまいます。
そんなことを解消するのがPythonチートシートです。

今回は「 フォルダ中のファイル一覧を取得してcsvファイルに出力する 」コードを紹介します。

環境設定
◆ Mac OS
◆ Python 3
◆ JupyterLab

前準備 フォルダの作成

このコードの実行によりファイル名を読み込むフォルダ・ファイルはこのJupyterLabで作成した「.ipynb」ファイルとの相対パスで場所を示します。

今「.ipynb」を保存しているフォルダと同じ階層に「input」と「output」というフォルダを作成してください。そして「input」フォルダの中には[test1.txt], [test1.txt], [test1.txt]の3つのテキストファイルを作成して保存してください。

コード: フォルダ中のファイル一覧を取得してcsvファイルに出力する

それでは実際に「 フォルダ中のファイル一覧を取得してcsvファイルに出力する 」コードを紹介します。

上記のコードでは、「csvファイルに保存する」作業までを行なっておりますが、用途に応じてその途中の「pandas dfに出力」や「listに出力」などで止めて自由に使ってください。

コードの解説

以下に各コードごとの処理について解説していいきます。

globでファイル名の取得

globとは、pythonのモジュールの1つです。globとは英語で「かたまり」という意味があります。pythonでは、glob関数を使うことで特定のパターンにマッチするファイルを取得することができます。

glob関数にファイルのマッチング条件を引数として与えると、その条件にマッチしたファイルを返してくれます。つまり、今回のように特定条件に従ったファイルを取得したいときにglobを使います。

上のコードは、file_list1にinputフォルダ中に存在する全てのファイル名を取得します。相対パスでフォルダを指定しており* (アスタリスク)は全てのファイルを意味します。現段階では上記を実行したのみでは出力結果として、['./input/test1.txt', './input/test2.txt', './input/test3.txt']と相対パスの情報が返ってきます。

スライスで文字列を抽出

[start:step]とすると、start <= x < stopの範囲の文字列が抽出できます。インデックスは0始まりでstartを省略すると先頭から、endを省略すると末尾までの範囲となります。

まず空リストを作成してそこに「スライス」で取り出したファイル名を保存します。forループの中ではfile_list1のリストからパス付きのファイル名を一つずつfile_nameとして取り出します。ここで取り出されるものは./input/test1.txtの形です。ファイル名はこの取り出したものの先頭から8文字目以降のためfile_name[8:]と書くことで「スライス」してファイル名のみを取り出すことができます。

この文字数は使用する環境に応じて調整してください。数を徐々に変えて望みのoutputが出るまで試行するのが早いです。

pandas dataframe出力およびcsv出力

上記で得られたlist形式のファイル名一覧をpandas dataframeおよびcsv形式で出力します。

pd.DataFrame()でpandas dataframe形式にlistを変換し、この時にcolumns=['xxx']でcolumn名を指定しております。

csv形式への出力はdf.to_csv(ファイルパス)で設定します。ここではoutputフォルダにget_filename-output_csv.csvというファイル名のcsv fileを出力しております。

最後に

Pythonチートシートで毎回よく使う作業のPythonコードをまとめ、今回は「 フォルダ中のファイル一覧を取得してcsvファイルに出力する 」コードを紹介しました。

他にもいろいろなチートシートを用意しておりますので以下から確認してみてください。

普段よく使う作業の[ Pythonチートシート ]
Pythonを使っていると複数のコードで共通して使用しているコードがあることに気付きます。その作業を完全に覚えていればいいのですが毎回ウェブで調べてコードを記述して、とすると目的の作業は同じなのにシートごとにコード記述方法が違ってしまい見に...

コメント

  1. […] てコードを記述して、とすると目的の作業は同じなのにシートごとにコード記述方法が違ってしまい見にくくなってしまいます。 そんなことを解消するのが「Pythonチートシート」です。 […]

タイトルとURLをコピーしました