#目的のフォルダ内にあるファイル・フォルダをリスト化

print("start")

#■■■■■■使用環境にあわせdir_targetとdir_file_outputを修正すること!!!

import os
import glob
import datetime as dt
import csv 

#path_csv_output    結果を書き出すCSVの絶対パス
#path_target    目的のフォルダ絶対パス
#path_file      目的のフォルダの中にあるファイル・フォルダの絶対パス
#type_file      ファイルとフォルダの区別
#dir_path       ファイル・フォルダのディレクトリ部分
#name_file      ファイル・フォルダの名前部分(拡張子なし)
#ext_file       ファイルの拡張子(フォルダの場合は空白)

#共通文字の設定
str_period = "."
delimiter_dir = "/"
mark_header_output = "list_file"
#mark_header_output = "■"

#目的のフォルダ絶対パスの指定。
#ディレクトリ部分だけ先に設定
#■■■■■■使用環境に合わせて修正すること!!!
dir_target = "C:/Users/*****/Desktop"
# pathのファイル名の頭に「~$」を入れておくと実行中ファイルは除外される
path_target = dir_target + "/[!~]**"

#結果を書き出すCSVの絶対パスの設定:ディレクトリとヘッダ名を分けて指定
#■■■■■■使用環境に合わせて修正すること!!!
dir_file_output = "C:/Users/*****/Desktop"

#(結果書き出しディレクトリではなくて)目的のフォルダのディレクトリ部分の最後の部分をファイルヘッダ名に自動設定する
pos_dir_last = dir_target.rfind(delimiter_dir) + 1
name_header_output = mark_header_output + dir_file_output[pos_dir_last:]+"_"
dt_now=dt.datetime.now().strftime("%Y%m%d%H%M%S")
ext_output = ".csv"
path_csv_output = dir_file_output + "/" + name_header_output + dt_now + ext_output

path_files = glob.glob(path_target, recursive=True)
#path_files = os.listdir(path_target)
list_file=[]
lists_file=[]

for path_file in path_files:
    #ディレクトリとファイル・フォルダ名を分離
    dir_path,file_path = path_file.split("\\")
    #ファイル・フォルダの区別を取得
    info_file = os.path.join(path_target, path_file)
    if os.path.isfile(info_file):
        # ファイルの場合
        type_file = "file"
        pos_period_last = file_path.rfind(str_period)
        name_file = file_path[:pos_period_last]
        ext_file = file_path[pos_period_last:]
        #print(path_file,type_file,dir_path,name_file,ext_file)
    if os.path.isdir(info_file):
        # ディレクトリの場合
        type_file = "dir"
        name_file = file_path
        ext_file = "dir"
        #print(path_file,type_file,dir_path,name_file,ext_file)

    #print(path_file,type_file,dir_path,name_file,ext_file)
    list_file=[path_file,type_file,dir_path,name_file,ext_file]
    lists_file.append(list_file)

with open(path_csv_output, 'w',newline="") as fo:
    writer = csv.writer(fo)
    writer.writerows(lists_file)

print("end")