3262715 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

傀儡師の館.Python

傀儡師の館.Python

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

Recent Posts

Calendar

Keyword Search

▼キーワード検索

Category

Archives

2023.11
2023.10
2023.09
2023.08
2023.07

Freepage List

Profile

kugutsushi

kugutsushi

Free Space

設定されていません。
2007.11.23
XML
カテゴリ:Python
Python を使ってディレクトリやファイルをたどりながら何かするのは面倒。たとえば、このディレクトリの下のファイル名が「~」で終わっているファイルを削除したいとかいうのを書こうとすると、unix だったら find コマンドを使って、find . -name \*~ -print -exec rm {} \; とかあるわけで、そんな風にもっと簡単にできないかなぁと思う人も多いだろう。で、path モジュールを使えば、この手のものも簡単に書けるようになる。

端的に言うと path モジュールは os.path をラップして使いやすくしたものなので、なければないでゴリゴリと書けばよいわけだけど、あったらあったでソースがシンプルになるので便利でしょうというもの。ちなみにライセンスはパブリックドメインなので自由な使い方ができる。

easy_install には対応していないので、path-2.2.zipをダウンロードして、解凍後、「python setup.py install」 でインストール。

$ unzip path-2.2.zip
$ cd path-2.2
$ sudo python setup.py install

さて、その威力といえば、例えば、htdocs 配下にある ~ でファイル名が終わっているバックアップファイルをすべて削除するなんていうのは、下のように書けるようになる。

#!/usr/bin/env python

import path

d = '/var/apache/htdocs'
for f in d.walkfiles('*~'):
f.remove

とまあ、このぐらいだと、そんなものとか思われるかもしれないが、このとき、f.mtime とか f.ctime、f.atime とかいう具合にファイルの更新時や作成時、アクセス時を参照することもできるし、f.size でファイルサイズ、f.f.owner で所有者も参照できる。さらに便利なことに、f.text() でファイルの中身を取り出せたりとかもする。

E:\WORK の下にある s*py にマッチするファイルの内、3000バイト以上で1時間以内に作成したものがあれば、ファイル名と所有者を表示し、ついでに、一行目も表示するなんていうのも、下のように数行で書けてしまう。ちょこっとファイル整理用にスクリプトを書くときなど、特に重宝すると思う。

#!/usr/bin/env python

import path
import time

d = path.path("e:/work")

for f in d.walkfiles("s*py"):
if f.size > 3000 and f.ctime > time.time() - 3600:
print f.name, f.owner, f.lines()[0]

と、まあ、えろえろできるので便利よ。


なかのひと






お気に入りの記事を「いいね!」で応援しよう

Last updated  2007.11.24 01:15:53
コメント(0) | コメントを書く



© Rakuten Group, Inc.