根据文件名称前缀重命名文件夹

时间:2015-04-26 18:29:26

标签: python

例如,这是我的文件夹列表:

foldername_java, foldername_new , foldername_old, myprogram_1, mylist_2, mylist_21, mylist_22

我想根据他们的名字前缀重命名这些文件夹。以' foldername'开头的文件夹应该重命名为包含索引0,以' myprogram'应该使用索引1重命名,并使用' mylist'索引2。

对于前缀的所有下一次出现,第二个索引应该增加,例如:

mylist_2
mylist_21
mylist_22

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

我真的不确定你在问什么。但我能想到的最好的就是你想根据它们的前缀重命名现有文件夹,删除所有后缀并按照外观顺序和前缀值替换整数。如果是这种情况,可以轻松完成:

indexes = {
    'foldername': 0,
    'myprogram': 1,
    'mylist': 2
}

folders = ['foldername_java',
           'foldername_new',
           'foldername_old',
           'myprogram_something',
           'mylist_new',
           'mylist_whatever',
           'mylist_stuff']

renamed_folders = []
for folder in folders:
    for s in indexes:
        if folder.startswith(s):
            new_folder = '{}_{}'.format(s, indexes[s])
            previous = len(filter(lambda x: x.startswith(s), renamed_folders))
            if previous:
                new_folder += str(previous)
            renamed_folders.append(new_folder)
            continue

>>> print renamed_folders
['foldername_0', 'foldername_01', 'foldername_02', 'myprogram_1', 'mylist_2', 'mylist_21', 'mylist_22']

答案 1 :(得分:0)

这绝对是可能的,但是你没有解释你想要做什么。也许这会有所帮助:

#!/usr/bin/python

folder_list = ['foldername_java', 'foldername_new', 'foldername_old', 'myprogram_1', 'mylist_2', 'mylist_21', 'mylist_22']

indexes_list = []
arranged_list = []
final_list = []

for i in folder_list:
    prefix, suffix = i.split('_')
    if prefix in indexes_list:
        arranged_list[indexes_list.index(prefix)].append(prefix)
    else:
        indexes_list.append(prefix)
        arranged_list.append([])
        arranged_list[len(arranged_list)-1].append(prefix)

for i in arranged_list:
    c=0
    for x in i:
        c+=1
        final_list.append(x + "_" + str(c))

print(final_list)


>>> ['foldername_1', 'foldername_2', 'foldername_3', 'myprogram_1', 'mylist_1', 'mylist_2', 'mylist_3']