os的奇怪行为

时间:2013-10-04 14:54:33

标签: python python-2.7

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

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

以下是代码:

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()                                         

1 个答案:

答案 0 :(得分:2)

当您遍历文件中的行时,Python会保留尾随换行符\n。你想剥掉那些:

for line in nopath:
    line = line.rstrip()