Python で ファイル一覧を取得するには os.listdir()を使います。
下記は、 os.listdir()を 利用してサブディレクトリ(サブフォルダ)内のファイルも取得するコード例です。
import os
import json
def nest_list_dir(in_path: str, file_list: list = None):
if file_list is None:
file_list:list = []
for a_obj in os.listdir(in_path): # 一覧取得
a_path = os.path.join(in_path, a_obj)
if os.path.isdir(a_path): # ディレクトリなら
nest_list_dir(a_path, file_list) # サブディレクトリ(サブフォルダ)に 移動
file_list.append(f"ディレクトリ({a_path})")
else:
file_list.append(a_path) # ディレクトリ以外はリスト追記
return file_list
for a in nest_list_dir('./日本'):
print(a)
./日本 フォルダ構成は下↓です
実行すると下↓のようにサブフォルダまで取得できました。
上↑コード例は Listでしたが、 下↓は JSONの構成で出力できる構成に変更したコード例です
import os
import json
from decimal import Decimal
def nest_list_dir_to_dict(in_path: str):
file_list:list = []
for a_obj in os.listdir(in_path): # 一覧取得
a_path = os.path.join(in_path, a_obj)
if os.path.isdir(a_path): # ディレクトリなら
nest_list = nest_list_dir_to_dict(a_path) # サブディレクトリ(サブフォルダ)に 移動
file_list.append({a_obj: nest_list})
else:
file_list.append(a_obj) # ディレクトリ以外はリスト追記
return file_list
print(json.dumps(nest_list_dir_to_dict('./日本'), ensure_ascii=False, indent=2, separators=(',', ':'), default=lambda _o : int(_o) if isinstance(_o, Decimal) else TypeError))
実行すると 下↓のように出力されました
[
".DS_Store",
{
"東京":[
"新宿区.txt",
"文京区.txt"
]
},
{
"大阪":[
".DS_Store",
"鶴見区.txt",
{
"東大阪市":[
"寺前町.txt"
]
}
]
}
]