絖綛 N@i.jp  昨日:00014314
 今日:00004495
 総計:00018809
keywords
管理者専用
  Post   Add link   Control Panel 































新しいトピック
最新:04/16 19:55


新しいコメント
最新:07/28 16:47






管理人へMAIL

プライバシーポリシー

Raspberry Pi から IRKitを操作する。三歩半

バグだけ直しておきましょ


 listサブコマンドのバグだけ直しておきますかね。listサブコマンドの関数は以下のようになっています。

def list(dir):
    '''List sub-command'''
    for file in os.listdir(dir):
        print(file.rstrip('.json'))    # ←ここバグってます

 バグの原因は '.json' 拡張子を削除するために str.rstript() を使っていることですね。str.rstript() の引数は除去される文字集合を指定する文字列なので、ファイル名末尾の '.json' 拡張子を削除するために使用するのは相応しくなかったのです。このような使用方法の場合、ファイル名末尾から {'.', 'j', 's', 'o', 'n'} の何れかの文字がある限り、その文字が除去されてしまうのですと。具体的には 'tv-on.json' というファイル名だった場合、'tv-on.json'.rstript('.json') の結果は 'tv-' になるのですね。実際にやってみると、

$ python3
>>> 'tv-on.json'.rstrip('.json')
'tv-'

となります。'.json'拡張子だけでなく 'on' まで除去されてしまって、listサブコマンドの結果が正しくないというバグになってしまったのでした。
 意図したのはファイル名から '.json' 拡張子を除去した名前だけを表示したいという事ですので、以下のように修正してみました。

def list(dir):
    '''List sub-command'''
    for file in os.listdir(dir):
        print(os.path.splitext(file)[0])

 os.path.splitext() で拡張子を取り除いています。これでどうかな?
 それにしても、たかだか100数十行のプログラムでも必ず幾つかのバグが入り込むもんなのですよね〜。今回の原因は仕様の理解や確認が足りないって事だな。もしも仕事でこんなバグ作り込んでたら、どえらい大変なことになるので、プログラマなんて職業は選ばない方が良いですよ。(^^;)


< 過去の記事 [ 8月の 全てのカテゴリ リスト ] 新しい記事 >

2015 calendar
8月
1
2345678
9101112131415
16171819202122
23242526272829
3031


掲示板
最新:08/15 17:19


GsBlog was developed by GUSTAV, Copyright(C) 2003, Web Application Factory All Rights Reserved.