Hatena::ブログ(Diary)

bonlife このページをアンテナに追加 RSSフィード

言及ISBN/ASIN
  • Ringo EXPO 08 [DVD]
  • 三文ゴシップ
  • my way
  • ビジネスパーソンのための話し方入門 (日経文庫)
  • ザ・グーグルウェイ グーグルを成功へ導いた型破りな戦略
  • 考え・書き・話す3つの魔法
  • 自分の答えのつくりかた―INDEPENDENT MIND

2015-11-30

Pythonで指定したディレクトリ配下のディレクトリ名とファイル名を取得する(改定案)

http://statsbeginner.hatenablog.com/entry/2015/11/26/134250

import os

def gen_filelists(path, abspath=False, sysfile=False):
    # 指定ディレクトリの配下にあるディレクトリやファイルをたどる
    for dirpath, dirnames, files in os.walk(path):
        # sysfile=False の場合、システムディレクトリ(.ではじまるもの)を対象外にする
        for dir in dirnames:
            if sysfile==False:
                if dir.startswith('.'):
                    dirnames.remove(dir)                
        for file in files:
            # sysfile=False の場合、システムファイル(.ではじまるもの)を無視
            if sysfile==False:
                if file.startswith('.'):
                    pass
                else:
                   # フルパスを出力するかどうかで処理を分岐
                    if abspath==True:
                        yield os.path.abspath(file)
                    else:
                        yield file
            # 下記パートが重複している点、カッコ悪いので改善が必要…
            else:
                if abspath==True:
                    yield os.path.abspath(file)
                else:
                    yield file

if __name__ == "__main__":
    print("abspath:False / sysfile:False")
    print([ file for file in gen_filelists('.', abspath=False, sysfile=False) ])
    # sysfile=True にした場合、Windowsでは os.path.abspath() が . で始まるフォルダを上手く扱えない?
    print("abspath:False / sysfile:True")
    print([ file for file in gen_filelists('.', abspath=False, sysfile=True ) ])
    print("abspath:True  / sysfile:False")
    print([ file for file in gen_filelists('.', abspath=True,  sysfile=False) ])
    print("abspath:True  / sysfile:True")
    print([ file for file in gen_filelists('.', abspath=True,  sysfile=True ) ])

midnightseminarmidnightseminar 2015/11/30 22:18 わざわざありがとうございます!

bonlifebonlife 2015/12/01 08:35 いえいえ。
久々のPython練習のために勝手に参考にさせていただきました。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/bonlife/20151130/1448873550