Powered By 画RSS

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

python filecmp ファイルの比較

■python filecmp ファイルの比較
ファイルを比較したい場合、filecmp.cmp()を使用する。
http://www.python.jp/doc/2.4/lib/module-filecmp.html

使い方は...
filecmp.cmp(‘aaa,txt’,’bbb.txt’)
のように使い、aaa.txtとbbb.txtが同じファイルならTrueを、違うファイルならFalseを返す。

import filecmp

print filecmp.cmp(r'C:\test\filecmp.txt', r'C:\test\copyfilecmp.txt')


使ってみたところ、
半角スペース、改行がひとつでも入ってると違うファイルと判断して、Falseを返してくれるみたい。


ここから余談
上記のテストコードをEclipseで書いたらエラーが出力された。
こんな簡単なコードでなんでだ?と思って色々やったけど、解決されない。
結局プロジェクトを作り直して、動かしてみたら正常になった。
う~ん分からん・・・。
スポンサーサイト

Python 自身のパスを取得する

■python スクリプトを実行した場所を取得する

関連:[Python]引数を取得する
http://kbdpage.blog82.fc2.com/blog-entry-7.html
この方法を知ったとき、あぁなるほどと思った。
関連記事書いたとき、気づきたかったが、この発想はなかった。

C:\testpgm\argv0.py とファイルを配置するとして。。。
以下のコードで実行。

import os
import sys

print sys.argv[0]
print os.path.abspath(sys.argv[0])

print os.getcwd()
print os.path.dirname(sys.argv[0])

>>> 実行結果
C:\testpgm\argv0.py
C:\testpgm\argv0.py
C:\testpgm
C:\testpgm


色変えたとこだけ、覚えておけばいいかな・・・。
下2行はオマケだし。

Fine Software Writings

Fine Software Writings
ソフトウェア開発に関する文書が翻訳されて掲載してあるサイト。
空いた時間とかに読んでると、あっという間に時間が過ぎる。

いくつか記事をピックアップしてみる。
人気のあるページに並んでるのはどれも面白いんだけど。


バベル案内
2004年と古い記事となるが、プログラミング言語案内の文書。

ホワイの(感動的)Rubyガイド
バベル案内で手放しで賞賛されているRubyの入門ガイド。
軽く目を通してみたけど、ちょっと読みづらい気がする。
Rubyに限っては日本語ガイドがたくさんあるし。
でも、ユニークなのは間違いない。

Scott Hanselmanの開発者とパワーユーザーのための究極のWindowsツールリスト2009
この文書で、Windows live writer が取り上げられてたので、入れたみたところ大正解ですよ。
色々漁ってみて、「オッ!」と思うものがあったら、入れてみると良いかも。
取り上げられている TrueCrypt とかProcess Explorer とかは、私からもお勧め。
DarkRoom も興味あるけど、使う機会がないよなぁw

python 例外を取得する

■python 例外を取得する
traceback.format_exc()を使用する
http://www.python.jp/doc/2.4/lib/module-traceback.html

例外が起こった際に文字列を返してくれる。
ついでにその文字列をファイルに書き込むところまで、書いてみる。

import traceback
import datetime

today = datetime.datetime.today()

try:
    err = input("try:")
    print err
except:
    errorlog = traceback.format_exc()
    logtext = open("C:\\test\\log.txt","a+")
    logtext.write(today.__str__())
    logtext.write(errorlog)
    logtext.close()

このコードを実行すると、
try:
と入力が求められるので、日本語とか入力すれば、例外が発生する。
その例外結果が、C:\test\log.txtに書き込まれる。

open("C:\\test\\log.txt","a+")
  は、追記モードで開いているので、
再度例外が発生しても、以前の例外結果が上書きされることはない。

datetime.datetime.today()  は、ログファイルと想定するなら、日付も書き込んどいた
ほうがいいよなぁと思って追加。

以上。

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関数は、ファイルパスを渡して、最終更新時間とファイルサイズを取得して返す処理を行う。

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

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

ベタログ

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

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

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

個人的に押しているモノ


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

オーバーロード1 不死者の王
オーバーロード1 不死者の王
■感想記事
最強軍団が異世界を蹂躙するファンタジー。Web版も読めますが、凄まじい加筆がされているため、Web版読者も楽しめます。
■お勧め品
■最新コメント
■月別アーカイブ
検索フォーム
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。