我拼命地需要你的帮助。我听说python是用户友好的,但我很难找到合适的命令。
我的文件名为:
cake_cake01_F_A01.ab1
cake_cake02_F_A02.ab1
cake_cake03_F_A03.ab1
cake_cake04_F_B01.ab1
cake_cake05_F_B02.ab1
cake_cake06_F_B03.ab1
cake_cake07_F_C01.ab1
cake_cake08_F_C02.ab1
cake_cake09_F_C03.ab1
在具有特定目录的文件夹中。
我需要将它们更改为:
cake_cake01-2101plus.ab1
cake_cake02-2101plus.ab1
cake_cake03-2101plus.ab1
cake_cake04-2101plus.ab1
cake_cake05-2101plus.ab1
cake_cake06-2101plus.ab1
cake_cake07-2101plus.ab1
cake_cake08-2101plus.ab1
cake_cake09-2101plus.ab1
在同一个文件夹中。
我想我必须删除这些名称的-10到-5个位置,并在文件扩展名前添加-2010plus
。我怎么能用Python做到这一点?
答案 0 :(得分:1)
您是否可以使用glob
来更改文件名:
import os
import glob
filenames = glob.glob('/path/to/cake_cake*.ab1')
for filename in filenames:
newname = filename[:-10] + '-2101plus.ab1'
os.rename(filename, newname)
答案 1 :(得分:0)
返回一个列表,其中包含path。给出的目录中的条目名称。
使用regular expressions,您可以match()
一个所需的模式,然后通过仅替换您希望的字符串部分,从之前的字符串创建一个新名称。
如果需要,您可以轻松更改replacement
或迭代所有目录(directory
),甚至可以更改模式的开头或结尾。
模式的简短说明:\d{2}
表示" 2位",\.
匹配点,[A-Z]
匹配任何大写字母。
import os
import re
################ Change those ###############
replacement = '-2101plus'
directory = '/home/usercat/allmycakes'
first_part_of_pattern = 'cake_cake\d{2}'
last_part_of_pattern = 'txt'
#############################################
for file_name in os.listdir(directory):
if re.match(r'%s_[A-Z]_[A-Z]\d{2}\.%s' % (first_part_of_pattern, last_part_of_pattern), file_name):
old_path = directory + '/' + file_name
new_file_name = re.sub(r'(%s)_[A-Z]_[A-Z]\d{2}(\.%s)' % (first_part_of_pattern, last_part_of_pattern),
r'\1{}\2'.format(replacement), file_name)
new_path = directory + '/' + new_file_name
os.renames(old_path, new_path)