【问题标题】:Python: How to loop a processPython:如何循环进程
【发布时间】:2011-05-04 17:50:19
【问题描述】:

我正在制作一个小型应用程序/脚本,以便按照我想要的方式将我的 mp3 放入文件夹层次结构中,因为我还没有找到适合 Unix 的解决方案。所以我决定自己工作。这是摘录

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 行代码,就这么简单。所以我想知道是否无论如何我可以使用循环。但是,使用循环的问题在于,对于每个块,我必须更改列表中的数字。例如,从块一到二,我必须将musfile[0] 更改为musfile[1],我不知道如何使用循环来做到这一点。事实上,我对循环知之甚少。我够清楚吗?

【问题讨论】:

    标签: python loops file-organization


    【解决方案1】:
    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)
    

    【讨论】:

    • 对不起,不起作用,因为在循环中的第二次,它返回了一个错误 makedirs 因为目录已经创建了。
    • @user738534 添加一个 try: except: 声明 docs.python.org/tutorial/errors.html
    【解决方案2】:

    这并没有回答你原来的问题,但这是我对类似问题的解决方案:Importer

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多