将文件名首字母大写,但保持扩展名为小写

0 投票
1 回答
541 浏览
提问于 2025-04-18 16:43

我写了一个脚本,可以把当前文件夹里的所有文件名都改成统一的格式,除了那些我设定要跳过的文件。之所以写这个脚本,是因为有时候下载的文件名格式各不相同。有的人用".,-_"这些符号,或者把字母都大写,反正看起来很乱,也不方便处理。所以我做了这个脚本,让所有文件名都变得整齐一致。

import os,sys,re,time

start=time.time()
skip2=['.py']
skip3=['.Jpg','.jpg']
count=0
lijst=os.listdir()

r = re.compile(r'[-_ ]+')
def solve(s):
    name, ext = os.path.splitext(s)
    artist, song = name.rsplit('-', 1) 
    artist = r.sub(' ', artist).title().strip()
    song = r.sub(' ', song).title().strip()
    ext = ext.lower()
    return artist + ' - ' + song + ext


for x in lijst:
    if x[-3:] not in skip2 and x[-4:] not in skip3:
        y=x
        if __name__ == '__main__':
            x=solve(x)
            x=re.sub('Ft' ,'Ft.' ,x)
            x=re.sub('Feat' ,'Feat.' ,x)
            x=re.sub('Extended Mix' ,'(Extended Mix)' ,x)
            x=re.sub('Original Mix' ,'(Original Mix)' ,x)
            x=x.replace('(((' ,'(')
            x=x.replace('((' ,'(')
            x=x.replace(')))' ,')')
            x=x.replace('))' ,')')
            x=re.sub("\.\.",".", x)
            x=re.sub('  'or'   ' ,' ' ,x)
            print(x)
            os.rename (y,x)
            count=count+1

print("%s Files edited."%count)

print('It took', time.time()-start, 'seconds.')

input("Press enter to exit...")

非常感谢 Ashwini Chaudhary 的帮助,我解决了我的问题,并把这个脚本放在这里,方便其他人使用。

1 个回答

0

你可以使用 os.path.splitext 这个工具,先把文件名和文件后缀分开,然后对文件名进行一些处理,最后再把它们合并回去:

import os
import re

r = re.compile(r'[-_ ]+')
def solve(s):
    name, ext = os.path.splitext(s)
    artist, song = name.rsplit('-', 1) 
    artist = r.sub(' ', artist).title().strip()
    song = r.sub(' ', song).title().strip()
    return artist + ' - ' + song + ext

if __name__ == '__main__':
    print solve("Alibi- Eternity_ Ft_ Armin Van Buuren and Dj Tiesto_.mp3")
    print solve( "05-orjan_nilsen-so_long_radio__original_mix.mp3")
    print solve( "05 - Orjan Nilsen - So Long Radio (Original Mix).mp3")

输出结果:

Alibi - Eternity Ft Armin Van Buuren And Dj Tiesto.mp3
05 Orjan Nilsen - So Long Radio Original Mix.mp3
05 Orjan Nilsen - So Long Radio (Original Mix).mp3

撰写回答