ディレクトリ内のアイテムのセットにパターンを追加または削除する 2 つのユーティリティ関数があります。名前の変更を行う行を除いて、機能はまったく同じです。これにより、それらを1つの機能にマージできると信じています。
以下に 2 つの関数を示します。
def append_items(source, pattern, dirs = True, recurse = False):
"""
Append the pattern to all items within a directory
source = act on this directory
pattern = add this to the start of the file
dirs = apply to directorys
recurse = work recursively
"""
for item in os.listdir(source):
path = os.path.join(source, item)
if "svn" not in item:
if os.path.isdir(path):
# Recurse first
if recurse:
append_items(path, pattern, dirs, recurse)
if dirs:
rename(path, path + pattern)
elif os.path.isfile(path):
name, ext = os.path.splitext(item)
# Append pattern, add extension back
new_path = os.path.join(source, "%s%s" % (name, pattern) + ext)
rename(path, new_path)
#----------------------------------------------------------------------------------------------------------
def remove_string_from_items(source, pattern, dirs = True, recurse = False):
"""
Remove a pattern from all items within a directory
source = directory
pattern = text to replace
"""
for item in os.listdir(source):
path = os.path.join(source, item)
if "svn" not in item:
if os.path.isdir(path):
# Recurse first
if recurse:
remove_string_from_items(path, pattern, dirs, recurse)
if dirs and pattern in item:
target = os.path.join(source, string.replace(item, pattern, ""))
rename(path, target)
elif os.path.isfile(path) and pattern in item:
target = os.path.join(source, string.replace(item, pattern, ""))
rename(path, target)
誰でもよりクリーンなソリューションを教えてもらえますか?