例如,这是我的文件夹列表:
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
我怎样才能做到这一点?
答案 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']