繁体   English   中英

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

[英]Batch Rename Every 5 Files in a Directory [closed]

我有500个文件的目录,需要批量重命名。 这些文件是通过Google驱动器表单收集的,申请人在该表单中提交了5个标有以下内容的个人文件:

CPW541_PersonalInformationSheet
CPW541_Resume
CPW541_ShortResponses
CPW541_Essay
CPW541_AcademicSummary
SEL285_PersonalInformationSheet
SEL285_Resume
SEL285_ShortResponses
SEL285_Essay
SEL285_AcademicSummary

我想将上述文件名批量重命名为(从目录顶部开始按字母顺序):

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

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

假设顺序并不重要,那么下面的内容可能就足够了-获取文件列表,找出所有前缀和后缀(用_分隔),然后为每个前缀将每个文件从prefix_suffix重命名为count_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))
        ) 

*有人提出,后缀是人为输入的,因此可能拼写错误,并非全都大写,等等。这应该可以解决:

 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

成:

1_part1
1_part2
2_pt1
2_ptTwo

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM