如何用西里尔字符重命名文件,替换西里尔字母?

时间:2016-05-19 18:51:11

标签: python python-2.7 unicode rename cyrillic

我有一个包含100多个mp3文件的文件夹。

他们尊重这种模式:' AgencyInfo'

我有一个代码来重命名我的所有文件,它的工作几乎没问题。 除了我在文件名中有一些西里尔字符时遇到麻烦的事实。

  

例如:

/音乐时:

000. MSK_NAME.mp3

renamer.py:

'''
011. ?????? - ? ?? ???? ??? ???? (Dima Flash.mp3
012. ?????? feat. ?????? ??????? - ???????? (DJ Shtopor & DJ Oleg Petroff Remix).mp3
018. MarQ Markuz - ?????? (DJ A.G. RnDeep Remix).mp3
026. Serebro - ?????????? (DJ Denis Rublev & DJ Anton Remix).mp3
027. Samoel feat. ?????? - ????????????? ????? (Oleg Perets & Alexey Galin Remix) .mp3
029. 5sta Family - ????? (Tony Sky Sax Remix) .mp3
030. ???? ???? - ????? ????? (Dj Jurbas Nu-Disco Mix ).mp3
036. Quest Pistols - ????? ????? (DJ Denis Rublev & DJ Timur Remix).mp3
037. Serebro - ?????????? (Mickey Martini & Alexx Slam Remix).mp3
041. ??? - ???? ? ???? (Tony Sky Remix).mp3
'''

或许我应该改变这样的东西:

# -*- coding: utf-8 -*-

import os

folder = "C:\\users\\myuser\\desktop\\musics"

for item in os.listdir(folder):
    item2 = item[5:]
    path = folder + "\\" + item
    try:
        renamed = folder  + "\\" + item2
        os.rename(path, renamed)
    except:
        #how am I supposed to create converted a filename without these Cyrillic characters ?
        #i think it has something to do with using the translit() function from transliterate library
        continue

print "Done."

因此...

  • 如果没有这些cyrilic字符我应该如何创建转换文件名?

有人可以告诉我使用translit()except: renamed2 = translit(path, 'ru', reversed=True) os.rename(path, renamed2) 方法创建有效文件名的正确方法吗?

也许是这样的:

os.rename()

但是在循环文件夹内的文件时......

1 个答案:

答案 0 :(得分:1)

答案:

在搜索了一下后,我找到了以下解决方案:

  1. folder = "C:\\Users\\myuser\\Desktop\\musics"更改为folder = u"C:\\Users\\myuser\\Desktop\\musics"

  2. 在我的except:部分添加了以下代码。

  3. <强>修正:

    except:
        newName = translit(item, 'ru', reversed=True)
        renamed2 = folder  + "\\" + newName
        os.rename(path, renamed2)
    

    <强>代码:

    # -*- coding: utf-8 -*-
    
    import os
    from transliterate import translit
    
    folder = u"C:\\Users\\myuser\\Desktop\\musics"
    
    for item in os.listdir(folder):
    
        item2 = item[:]
        path = folder + "\\" + item
    
        try:
            renamed = folder  + "\\" + item2
            os.rename(path, renamed)
    
        except:
            newName = translit(item, 'ru', reversed=True)
            renamed2 = folder  + "\\" + newName
            os.rename(path, renamed2)
    
    print "done."