我有一个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作为参考,但我无法理解如何重命名每五个文件。任何帮助将不胜感激!
答案 0 :(得分:1)
假设排序不重要,以下可能就足够了 - 获取文件列表,找出所有前缀和后缀(在_
上拆分),然后为每个前缀重命名每个文件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))
)
答案 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