0

ちょうどいいUnixの解決策が見つからなかったので、mp3をフォルダ階層に好きなように配置するための小さなアプリ/スクリプトの作成に取り組んでいます。それで私は自分で働くことにしました。これは抜粋です

if musfile[0]:
    m = musfile[0]
    tag.link(m)
    mar = str(tag.getArtist())
    mal = str(tag.getAlbum())
    mti = str(tag.getTitle())
    #m1track = str(tag.getTrack())
    os.rename(m,mar + ' - ' + mti + '.mp3')
    m = mar + ' - ' + mti + '.mp3'
    os.makedirs(newmusicdir + '/' + mar + '/' + mal + '/')
    shutil.copy(m,newmusicdir + '/' + mar + '/' + mal + '/')

if musfile[1]:
    m = musfile[1]
    tag.link(m)
    mar = str(tag.getArtist())
    mal = str(tag.getAlbum())
    mti = str(tag.getTitle())
    #m1track = str(tag.getTrack())
    os.rename(m,mar + ' - ' + mti + '.mp3')
    m = mar + ' - ' + mti + '.mp3'
    os.makedirs(newmusicdir + '/' + mar + '/' + mal + '/')
    shutil.copy(m,newmusicdir + '/' + mar + '/' + mal + '/')

等々。ただし、複数のファイルを整理するために、コードのブロックを再利用しているだけです。ただし、これはコードのいくつかのブロックでは非常に非効率的です。たとえば、自分の方法で50曲だけを整理したい場合、500行を超えるコードが必要になります。だから、とにかくループを使うことができるかどうか疑問に思いました。ただし、ループを使用する場合の問題は、ブロックごとにリスト内の番号を変更する必要があることです。たとえば、ブロック1から2まで、に変更musfile[0]する必要がありmusfile[1]ますが、ループでそれを行う方法がわかりません。実際、私はループについてほとんど知識がありません。私は十分に明確ですか?

4

2 に答える 2

4
import os, os.path
import shutil

for m in musfile:
    tag.link(m)
    mar = str(tag.getArtist())
    mal = str(tag.getAlbum())
    mti = str(tag.getTitle())
    new_name = mar + ' - ' + mti + '.mp3'
    os.rename(m, new_name)
    new_dir = os.path.join(newmusicdir, mar, mal)    #use os.path.join instead of +'/' to be more multi platform, it is a good habit
    try:
        os.makedirs(new_dir)
    except:
        pass
    shutil.copy(new_name, new_dir)
于 2011-05-04T18:08:55.520 に答える
-1

これはあなたの元の質問に答えませんが、これが同様の問題に対する私の解決策です:インポーター

于 2011-05-04T18:12:25.637 に答える