批量重命名目录中的每5个文件

时间:2018-01-18 18:59:46

标签: python windows batch-file file-io rename

我有一个500个文件的目录,我需要批量重命名。这些文件是通过谷歌驱动器表格收集的,其中申请人提交了5个标记为这样的个人文件:

1_PersonalInformationSheet
1_Resume
1_ShortResponses
1_Essay
1_AcademicSummary
2_PersonalInformationSheet
2_Resume
2_ShortResponses
2_Essay
2_AcademicSummary

我想批量重命名上面的文件名(从目录顶部按字母顺序排列):

In [46]: mapping = {
    ...:     'mappings': {
    ...:         'article': {
    ...:          'properties': {
    ...:             'publish_at': {
    ...:                 'type': 'date'
    ...:             },
    ...:             'uuid': {
    ...:                 'type': 'text',
    ...:                 'fields': {
    ...:                     'keyword': {
    ...:                         'type': 'keyword'
    ...:                     }
    ...:                 }
    ...:             }
    ...: }
    ...:         }
    ...:     }
    ...: }

我尝试使用问题here作为参考,但我无法理解如何重命名每五个文件。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

假设排序不重要,以下可能就足够了 - 获取文件列表,找出所有前缀和后缀(在_上拆分),然后为每个前缀重命名每个文件prefix_suffixcount_suffix

from os import listdir, rename
from os.path import join
suffixes = ['PersonalInformationSheet', 'Resume', 'ShortResponses', 'Essay', 'AcademicSummary']
filedir = "/tmp/foo"

prefixes = set(prefix.split('_')[0] for prefix in listdir(filedir))
for count, prefix in enumerate(prefixes):
    for suffix in suffixes:
        rename(
            join(filedir, "{}_{}".format(prefix, suffix)),
            join(filedir, "{}_{}".format(count+1, suffix))
        ) 

答案 1 :(得分:0)

*已经提到后缀是人类输入的,因此可能拼写错误,并非全部大写相同,等等。这应该可以解决问题:

new

这转变了我的测试目录:

from os import listdir, rename
from os.path import join, exists
filedir = "/tmp/foo/"

files = listdir(filedir)
prefixes = set(prefix.split('_')[0] for prefix in files)
suffixes = set(prefix.split('_')[1] for prefix in files)

for count, prefix in enumerate(prefixes):
    for suffix in suffixes:
    	if exists(filedir+prefix+'_'+suffix):
    		rename(filedir+prefix+'_'+suffix,filedir+str(count+1)+'_'+suffix)

成:

asdf_part1
asdf_part2
fdsa_pt1
fdsa_ptTwo