Если я правильно понимаю, ваша основная проблема в том, что этот скрипт создает много пустых файлов pls.m3u.Это потому, что вы звоните open
еще до того, как проверили, хотите ли вы что-нибудь написать.
Простым решением было бы изменить это:
target = open("pls.m3u", 'w')
j = os.path.abspath(os.getcwd())
for filename in os.listdir(j):
(title, extn) = os.path.splitext(filename)
if extn == ".mp3":
target.write(filename)
target.write("\n")
на это:
target = None
j = os.path.abspath(os.getcwd())
for filename in os.listdir(j):
(title, extn) = os.path.splitext(filename)
if extn == ".mp3":
if not target:
target = open("pls.m3u", 'w')
target.write(filename)
target.write("\n")
if target:
target.write("\n")
target.write("\n")
То есть, открывайте файл только в первый раз, когда мы решим, что нам нужно записать его.
Более Pythonic может сделать что-то вроде этого:
j = os.path.abspath(os.getcwd())
mp3s = [filename for filename in os.listdir(j)
if os.path.splitext(filename)[1] == ".mp3"]
if mp3s:
target = open("pls.m3u", 'w')
for filename in mp3s:
target.write(filename)
target.write("\n")
target.write("\n")
target.write("\n")
То есть сначала создайте список mp3-файлов в памяти (используя здесь понимание списка, хотя вы могли бы использовать простой старый цикл for
и append
, если вам это более удобно) изатем откройте файл, только если результирующий список не пуст.(списки достоверны, если не пустые)