Powered By 画RSS

Python os.walk() ファイルの階層を渡り歩く

■python os.walk()
14.1.4 ファイルとディレクトリ
http://www.python.jp/doc/2.5/lib/os-file-dir.html

os.walk(パス)と渡すと、パス以下のディレクトリから、パス/サブディレクトリ/ファイル名のタプルを
生成して返してくれる。
ぶっちゃけライブラリリファレンス一読しただけじゃ、どんな動作するか理解できなかった。
しかし、使ってみたところ、かなり便利な関数っぽいことが分かった。

では、簡単なコードから。

import os

for dpath,dnames,fnames in os.walk("C:\python26"):
    for fname in fnames:
        print dpath,":",fname

[実行結果]
C:\python26\Lib\test : test_enumerate.py
C:\python26\Lib\test : test_eof.py
C:\python26\Lib\test : test_epoll.py

                     ・
                     ・
                     ・
                     ・
C:\python26\Tools\Scripts : texcheck.py
C:\python26\Tools\Scripts : texi2html.py
C:\python26\Tools\Scripts : treesync.py

C:\python26 以下の階層を渡り歩いて、ディレクトリパスとファイルをprintしてくれる
こういう処理って再帰という処理が必要なんじゃないのかな。
それをwalk関数だけでやってくれるんだから、頼もしい。

これを活用して
ディレクトリ、サブディレクトリのファイルパスを取得して、そのファイルの更新時間とファイルサイズも同時に取得して、表示するプログラムを書いてみる。
以前の記事の復習にもなるしね。

く・・・横に長い・・・・

import os
import time
from stat import *

def fileinfo(filepass):
    filepass2 = os.stat(filepass)
    st_mtime_output = filepass2[ST_MTIME]
    size_input = os.path.getsize(filepass)
    time_fmt = time.strftime(output_fmt,time.localtime(st_mtime_output))
    return time_fmt,size_input

output_fmt = '%Y/%m/%d %H:%M:%S'

for dpath,dnames,fnames in os.walk("C:\python26"):
    for fname in fnames:
        filepass =  dpath + "\\" + fname
        time_fmt,size_input = fileinfo(filepass)
        print filepass,"LastUpdate :".rjust(16),time_fmt,"FileSize :".rjust(14),size_input

[実行結果(の一部)]
C:\python26\Tools\Scripts\pindent.py     LastUpdate : 2008/02/28 20:09:42     FileSize : 18420
C:\python26\Tools\Scripts\ptags.py     LastUpdate : 2005/10/28 19:06:40     FileSize : 1278
C:\python26\Tools\Scripts\pydocgui.pyw     LastUpdate : 2005/10/28 19:06:40     FileSize : 222

前回の記事で書いた rjust も組み入れてみた。
fileinfo関数は、ファイルパスを渡して、最終更新時間とファイルサイズを取得して返す処理を行う。

これに手を加えるだけで、かなり実用的になるんではないだろうか。

関連記事
スポンサーサイト

この記事へのコメント

トラックバック

URL :

■スポンサードリンク
■プロフィール

ベタログ

管理人 : ベタログ (Twitterアカウント

思い立ったら、ジャンルを気にせず記事にする。それが自由というものだ。
そんな管理方針。
主に取り扱ってる事:オンラインゲーム(SDGO/Travian/ロードオブナイツ)、プログラミングメモ、ネット小説/書籍の感想/観葉植物など。

■まとめ記事
■カテゴリ
■最新記事
■PICKUP

個人的に押しているモノ


魚里高校ダンジョン部! 藻女神様と行く迷宮甲子園
魚里高校ダンジョン部! 藻女神様と行く迷宮甲子園
■感想記事
これぞ青春エンタメ小説。熱いですよ!

オーバーロード1 不死者の王
オーバーロード1 不死者の王
■感想記事
最強軍団が異世界を蹂躙するファンタジー。Web版も読めますが、凄まじい加筆がされているため、Web版読者も楽しめます。
■お勧め品
■最新コメント
■月別アーカイブ
検索フォーム
リンク