ついに壊れました。


とはいっても、microSDカード自体はまだ無傷ですが、カードのリーダ・ライタが逝きました。
USBケーブルの根元(本体との接合部分)が切れています。(下写真中央の黒い裂け目)
約6ヶ月間ほぼ毎日ケーブルを出し入れしていました。
90度ワイヤーを折り曲げて使用するタイプなので、耐久性については仕方がありません。
さっそく次期リーダ・ライタを調達しなければなりませんが、
今までのものがとてもコンパクトだったため、
同じ位の大きさのものがあるのか心配です。
yokoyama スタッフブログ
デジカメなどで撮影した画像をアルバム化するツールとしてF-Spotは便利なのですが、
インポートの際に、誤って過去にインポートしたファイルをコピーインポートしてしまうと、
ファイルが重複してしまいます。
同じ年月日で、a.jpgと言うものがあったとすると、コピーインポートしてしまった結果、
a-1.jpgやa-2.jpgといったファイルができてしまいます。
そこで、 F-Spotのデータ全体をスキャンして、重複ファイルを削除するpythonスクリプトを作りました。
適当なファイル名を付けて保存し、読み込みと実行属性を付けてください。
#! /usr/bin/env python
# -*- coding:UTF-8 -*-
#
# 概要:
# f-spotなどで画像を重複で取り込んでしまったときに、
# 重複ファイルを削除する
#
# 処理内容:
# -???というファイル名がある場合(???は1桁以上の数字)、
# それを取り除いたファイルが同じディレクトリに存在し、
# かつファイルサイズが同じなら削除する
# モジュールの読み込み
import re # 正規表現用
import os # ファイル・ディレクトリアクセス用
import sys # コマンドライン引数の取得用
# 引数チェック
if len(sys.argv) < 2:
print "usage: %s path" % sys.argv[0]
quit()
# ディレクトリの存在チェック
rootpath = sys.argv[1]
if not os.access(rootpath, os.F_OK):
print "dirctory %s is not found." % rootpath
quit()
# ディレクトリ内を全走査
print "start"
for root, dirs, files in os.walk(rootpath):
# ファイル名を得る
for name in files:
# -???.というファイル名を検索
if re.search("-\d+\.", name) != None:
print root, name
path = os.path.join(root, name)
# -???を削除したファイル名が存在するかチェック
orgname = re.sub("-\d+\.", ".", name)
orgpath = os.path.join(root, orgname)
if os.access(orgpath, os.F_OK):
# 元ファイルとファイルサイズが同じなら削除
org_s = os.stat(orgpath)
s = os.stat(path)
if s.st_size == org_s.st_size:
os.remove(path)
print path, " is removed"
print "done"
引数にF-Spotの画像ルートディレクトリを指定すれば処理を行います。
yokoyama プログラム小技 F-Spot, python, ファイル