1

+ 40Gの音楽を整理するためのコードを書いています。現在、すべてのファイルが1つの大きなフォルダーにあります。私の目標は、各アーティストのディレクトリを作成することです。現在、アーティスト情報を抽出してディレクトリを作成することができましたが、同じアーティスト情報を持つ2つのファイルがある場合、2つのフォルダのエラーが発生することがわかりました。同じ名前で。

2番目のフォルダが発生しないようにするためのサポートが必要です。

import os #imports os functions
import eyed3 #imports eyed3 functions

root_folder = '/Users/ntoscano/desktop/mp3-organizer'

files = os.listdir(root_folder) #lists all files in specified directory
if not files[1].endswith('.mp3'):
    pass #if the file does not end with ".mp3" it does not load it into eyed3

for file_name in files:
    if file_name.endswith('.mp3'): #if file ends with ".mp3" it continues onto the next line

        abs_location = '%s/%s' % (root_folder, file_name)

        song_info = eyed3.load(abs_location) #loads each file into eyed3 and assignes the return value to song_info
        if song_info is None:
            print 'Skippig %s' % abs_location
            continue
        os.mkdir(os.path.expanduser('~/Desktop/mp3-organizer/%s' % song_info.tag.artist))
        print song_info
        print song_info.tag.artist
    else:
        pass
4

1 に答える 1

2

try / exceptionでラップしmkdir、ディレクトリが存在するときに発生した例外をキャッチします。errnoモジュールもインポートしてください。

try:
    os.mkdir(os.path.expanduser('~/Desktop/mp3-organizer/%s' % song_info.tag.artist))
except OSError as e:
    if e.errno != errno.EEXIST:
        raise

を使用してディレクトリが存在するかどうかを確認することもできますがos.path.isdir()、これにより競合状態が発生します。

于 2013-01-06T04:02:18.747 に答える