1

我正在尝试编写一个 Python 脚本,它将采用任何播放列表并在另一个文件结构上重新创建它。我现在已经写好了,所有的文件名都被从原来的播放列表中删除并放入一个文件中。这样可行。然后函数 findsong() 应该遍历新目录并找到相同的歌曲并根据新目录结构制作新的播放列表。

这就是它变得奇怪的地方。如果我在“如果文件中的行”行中使用“行”作为参数,我会得到一个空的新播放列表。如果我使用任何我知道存在的文件作为参数,则会重新创建整个播放列表,而不仅仅是我用作参数的文件。这就是我在这段代码中设置它的方式。我无法弄清楚这种奇怪的行为。只要文件存在,就会使用新路径重新创建整个播放列表。呜??

这是代码:

import os

def check():

    datafile = open('testlist.m3u')
    nopath = open('nopath.txt', 'w')
    nopath.truncate()

    for line in datafile:
        if 'mp3' in line:
            nopath.write(os.path.basename(line))

        if 'wma' in line:
            nopath.write(os.path.basename(line))
    nopath.close()

def findsong():

    nopath = open('nopath.txt')
    squeezelist = open('squeezelist.m3u' ,'w')
    squeezelist.truncate()
    for line in nopath:
        print line

        for root, dirs, files in os.walk("c:\\Documents and Settings\\"):
            print files

            if ' Tuesday\'s Gone.mp3' in files:
                squeezelist.write(os.path.join(root, line))

    squeezelist.close()


check()

findsong()                                         
4

1 回答 1

2

当您遍历文件中的行时,Python 会保留尾随的换行符\n。你会想把它们去掉:

for line in nopath:
    line = line.rstrip()
于 2013-10-04T14:59:46.057 回答