Python 如何用西里尔字母替换西里尔字母来重命名文件?
我有一个包含100多个mp3文件的文件夹 他们尊重这种模式:'Python 如何用西里尔字母替换西里尔字母来重命名文件?,python,python-2.7,unicode,rename,cyrillic,Python,Python 2.7,Unicode,Rename,Cyrillic,我有一个包含100多个mp3文件的文件夹 他们尊重这种模式:'000。MSK_NAME.mp3' 我有一个代码来重命名我所有的文件,它几乎可以正常工作。 此外,当文件名有一些西里尔字符时,我还面临一些麻烦 例如: /music: ''' 011. ?????? - ? ?? ???? ??? ???? (Dima Flash.mp3 012. ?????? feat. ?????? ??????? - ???????? (DJ Shtopor & DJ Oleg Petroff Remi
000。MSK_NAME.mp3
'
我有一个代码来重命名我所有的文件,它几乎可以正常工作。
此外,当文件名有一些西里尔字符时,我还面临一些麻烦
例如:
/music:
'''
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."
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."
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."
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."
或者,我应该改变除此之外的部分,比如:
except:
renamed2 = translit(path, 'ru', reversed=True)
os.rename(path, renamed2)
print translit(u"Лорем ипсум долор сит амет", 'ru', reversed=True)
# Output: Lorеm ipsum dolor sit amеt
所以
- 我应该如何创建一个没有这些西里尔字符的转换文件名
os.rename()
方法创建有效文件名的正确方法吗
也许是这样的:
except:
renamed2 = translit(path, 'ru', reversed=True)
os.rename(path, renamed2)
print translit(u"Лорем ипсум долор сит амет", 'ru', reversed=True)
# Output: Lorеm ipsum dolor sit amеt
但是在文件夹内的文件上循环时…回答:
在进一步搜索之后,我找到了以下解决方案:
folder=“C:\\Users\\myuser\\Desktop\\music”
更改为folder=u“C:\\Users\\myuser\\Desktop\\music”
中,除了:
部分'''
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."
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."
代码:
'''
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."
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."
如果对新旧名称使用Unicode字符串,则根本不必进行音译。@MarkTolonen我想这就是我要找的,但无法在我的代码中实现。。。我不知道unicode是怎么工作的。。这对我来说有点奇怪。但这听起来比音译更容易实现。。