截断文件名

时间:2017-06-21 09:06:45

标签: python python-2.7

我想截断以下格式的文件:

  

XX艺术家 - 宋(等等).mp3

所以只剩下Song.mp3了。

艺术家和歌曲都可能包含空格和连字符。我正在使用拆分,但它没有用。 这是我的代码:

for file in os.listdir(path):
    if file.endswith('.mp3'):
        original = file
        t1 = original.split("(")[0] + ".mp3"
        t2 = t1.split("-")[1]
        t3 = t2.split(" ")[1]

2 个答案:

答案 0 :(得分:1)

关注EAFP,我们可以编写类似

的内容
import os

AUDIO_FILES_EXTENSIONS = {'.mp3'}

for file_name in os.listdir(path):
    base_name, extension = os.path.splitext(file_name)
    if extension in AUDIO_FILES_EXTENSIONS:
        try:
            artist_w_song, _ = file_name.split("(")
            artist, song = artist_w_song.split(" - ")
        except ValueError:
            print('File "' + file_name + '" doesn\'t match the pattern')
            continue
        t3 = song + extension
        # do work

这不是一个很好的解决方案,但至少我们正在传递与给定文件名模式不匹配的文件,如果您发现它不起作用 - 返回并编辑问题,以便我们可以改进我们的答案。

答案 1 :(得分:0)

您可以使用此/- (/w+)\(/

这样的正则表达式 在Python中

将是

pattern = re.compile('- (?P<song>\w+)\(')