LoginSignup
1
2

More than 3 years have passed since last update.

フォルダ内のすべてのxlsxファイル名を自然順のリストで取得して、絶対パスを構築する

Last updated at Posted at 2020-03-22

背景・前提・仕様とか

仕事用でExcelファイルを扱うツールを作るときの備忘テンプレ。

意図した動作の前提として、下記の状態と想定しています。

  • デスクトップ上に任意の名前(下記コード中のfolder_name)でフォルダを作り、その中に扱いたいxlsxをすべて放り込んだ状態で動かす。

  • フォルダ内の全xlsxのファイル名リストを、自然順のリストで取得

  • ファイル名リストをfor文で順繰り取得して、各ファイルの絶対パスを構築するところまで。

自然順とは

「ファイル名+番号」みたいなリストを、人間から見ていい感じに整列させたときの順序。

例えば、

["n5", "n1", "n10"]

というリストを普通にソートすると、

["n1", "n10", "n5"]

となるけど、自然順だと、

["n1", "n5", "n10"]

になる。

※参考にさせていただいたページ
[python] os.listdir()の出力を数字順にsortして、それらを順番にpd.read_csvで読み込みたい|teratail

実行環境

実行環境と各ライブラリのバージョンは下記の通り。

  • Windows10 pro
  • Python 3.7.3
  • natsort 7.0.1

フォルダ内のすべてのxlsxファイルの名称を自然順のリストで取得して、絶対パスを構築する。

for_all_xlsx.py
import os
from natsort import natsorted


# デスクトップに作った任意のフォルダ名称

folder_name = "******"


# 定数
desktop_path = os.getenv("HOMEDRIVE") + os.getenv("HOMEPATH") + "\\Desktop"
folder_path = os.path.join(desktop_path, folder_name)


# Excelファイル名リストを自然順で取得
files = natsorted(os.listdir(folder_path))

#ファイル名リストをfor文でまわして各ファイルの絶対パスを構築
for filename in files:
    filepath = os.path.join(folder_path, filename)
'''以下、処理したい内容を記述'''

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2