プレイリストを取得して別のファイル構造で再作成する Python スクリプトを作成しようとしています。すべてのファイル名が元のプレイリストから取り除かれ、ファイルに入れられるように、今書いています。それはうまくいきます。次に、関数 findsong() が新しいディレクトリをウォークスルーし、同じ曲を見つけて、新しいディレクトリ構造に基づいて新しいプレイリストを作成することになっています。
ここが変なところです。「If line in files」行の引数として「line」を使用すると、空の新しいプレイリストが得られます。そこにあることがわかっているファイルを引数として使用すると、引数として使用したファイルだけでなく、プレイリスト全体が再作成されます。それが、このコードで設定した方法です。この奇妙な動作を理解できません。ファイルが存在する限り、プレイリスト全体が新しいパスで再作成されます。えっ??
コードは次のとおりです。
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()