再帰関数があんまり理解できていないので、例題を解きながら勉強する
954 views
こんな感じのフォルダがあるとする。
これを再帰で検索してみる!!
スペースとかを利用してフォルダ構成をわかりやすく出力する。
まずは、ルートディレクトリを取得する。
import os
sample = os.path.join(os.path.join(os.environ['USERPROFILE']), 'Sample')
baseDir = os.listdir(path = sample)
print(baseDir)
まずはコード
まずは、それっぽいものを書いてみた。
import os
#ベースになるフォルダとパス
basePath = os.path.join(os.path.join(os.environ['USERPROFILE']), 'Sample')
baseDir = os.listdir(path = basePath)
#フォルダを検索する処理
def searchDir(dir,path):
#取得したファイル数行う
for i in dir:
try:
#こっちはフォルダだった時の処理
#探索するパスを作成
newPath = path + '//' + i
#新しいフォルダを取得
newDir = os.listdir(path = newPath)
#出力
print('[フォルダ]',i)
# 取得したフォルダ直下を検索
searchDir(newDir,newPath)
except:
# ファイルを取得したとき
print('-',i)
pass
searchDir(baseDir,basePath)
思ったよりうまくいってるね。
後はスペースとったりして見やすくしたいね。
import os
basePath = os.path.join(os.path.join(os.environ['USERPROFILE']), 'Sample')
baseDir = os.listdir(path = basePath)
def searchDir(dir,path,cnt):
j = 1
space = ' '
while j <cnt :
space +=' '
j += 1
for i in dir:
try:
newPath = path + '//' + i
newDir = os.listdir(path = newPath)
print(space + i)
searchDir(newDir,newPath,cnt+1)
except:
print(space + i)
pass
searchDir(baseDir,basePath,1)
それっぽくなった!!
Page 2 of 3.
owl
駆け出しエンジニア
だいたいweb系をかじってる
最近ちょとブロックチェーンに興味出てきた