from Py365Lib import Common, FileSystem as fs, Text # START # パラメータ確認 if Common.count_args() < 1: Common.stop("Usage : change_dirnames.py directory") # ディレクトリ一覧を得る。 parent = Common.args(0) dirs = fs.listDirectories(parent, True) # ディレクトリ名 [.+] を見つける。 for d in dirs: if Text.re_contain(r".+\[.+\]$", d): d2 = Text.replace("[", "", d) d2 = Text.replace("]", "", d2) fs.move(d, d2) print(d2) print("**************") # サブディレクトリに ^\[.+\] .+ を見つける。 dirs = fs.listDirectories(parent, True) for d in dirs: dirs2 = fs.listDirectories(d, True) for d2 in dirs2: d3 = Text.re_replace(r"\[.+\]\s+", "", d2) fs.move(d2, d3) print(d3) # 終わり print("Done.")
def rename_files(folder): # 画像ファイル一覧を得る。 print(folder) files = fs.listFiles(folder, asstr=True) # 画像ファイルをリネーム for fpath in files: #fpath = Common.from_bytes(f) ext = fs.getExtension(fpath).lower() # 画像ファイルのみを対象にする。 if ext == ".jpg" or ext == ".png" or ext == ".gif": # ファイル名が nnnnnnn_pnn[.jpg] か fname = fs.getFileName(fpath) ff = Text.split("_", fname) if not (ext in ff[1]): ff[1] += ext if len(ff) == 3: # 3分割できて 'master' が含まれる場合は 'master..' 部分を削除する。 #fname_old = fname fname = ff[0] + '_' + ff[1] #print(fname_old + " to " + fname) elif len(ff) != 2: # _ で2分割できない場合(ファイル名の形式が異なる場合)はスキップする。 print("Skipped " + fname) continue else: # その他の場合は何もしない。(2分割できた場合) pass # 連続番号部分の形式を確認する。 sf = ff[1] if ff[1].startswith('p'): if len(ff[1]) == 6 or (len(ff) == 3 and len(ff[1]) == 2): # 連続番号が1桁の場合 sf = "p0" + Text.substring(ff[1], 1) newname = folder + "/" + ff[0] + "_" + sf fs.move(fpath, newname) print("Renamed: " + newname) elif len(ff) == 3 and len(ff[1]) == 7: # _master1200 があり連続番号が2桁の場合 newname = folder + "/" + fname fs.move(fpath, newname) elif len(ff[1]) == 8 or (len(ff) == 3 and len(ff[1]) == 4): # 連続番号が3桁または連続番号が3桁かつ _master1200 がある場合 sn = Text.substring(ff[1], 1) if sn == '1': # 連続番号が3桁かつ100番台の場合 sf = "q" + Text.substring(ff[1], 2) newname = folder + "/" + ff[0] + "_" + sf fs.move(fpath, newname) print("Renamed: " + newname) elif sn == '2': # 連続番号が3桁かつ200番台の場合 sf = "r" + Text.substring(ff[1], 2) newname = folder + "/" + ff[0] + "_" + sf fs.move(fpath, newname) print("Renamed: " + newname) else: # 連続番号が3桁かつ300番台以上の場合はサポートしない(スキップする) pass else: # 連続番号が2桁の場合 #print("Passed: " + fpath) pass else: #fs.move(fpath, fpath + ".jpg") print("Non image passed: " + fpath) return