
[英]Batch rename of files to a part of their directory structure in Python
[英]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.