Форум сайта python.su
Прошу подскажите .
Не срабатывает скрипт.
# -*- coding: utf-8 -*- #!/usr/bin/env python3 import sys import urllib import urllib.request import urllib.error import os from urllib.parse import urlparse def get_url_nofollow(url, pathTo): try: urllib.request.urlretrieve (url, pathTo) return 1 except urllib.error.HTTPError as e: return 0 except: return 0 def main(args): urls = [] # urls = {} arguments = len(args) - 1 filepath1 = 'printer1.mu3' filepath2 = 'err.mu3' if arguments > 1: filepath1 = args[1] if arguments >= 2: chan = args[2] if arguments >= 3: filepath2 = args[3] plist = "plist.m3u" plistF = open(plist, "w", encoding = "utf-8") with open(filepath1, encoding = "utf-8") as fp: line = fp.readline() cnt = 1 while line: line = line.strip() line = line.strip('\n') line = line.strip('\r') a = urlparse(line) pathTo = filepath2 + '\%s' % os.path.basename(a.path) out = get_url_nofollow(line, pathTo) if (out != 1): print("not found - " + line) else: urls.append(pathTo) line = fp.readline() fp.close() with open(chan, encoding = "utf-8") as fc: chName = fc.readline() while chName: chName = chName.strip() chName = chName.strip('\n') chName = chName.strip('\r') print(chName) for url in urls: # print(url) with open(url, encoding = "utf-8") as fo: line = fo.readline() # print(line) cnt = 1 while line: if (line.find(chName) != -1): plistF.write(line) line = fo.readline() plistF.write(line) line = fo.readline() fo.close() chName = fc.readline() fc.close() plistF.close() if __name__ == "__main__": main(sys.argv[0:])
Офлайн
satfan
ну вам же написано что нет такого файла printer1.mu3 который вы пытаетесь открыть в 37 строке кода
Офлайн
Создал этот файл.
Следующая ошибка:
============= RESTART: C:\Python38-32\Скачатьm3u\download_m3u.py =============
Traceback (most recent call last):
File “C:\Python38-32\Скачатьm3u\download_m3u.py”, line 87, in <module>
main(sys.argv)
File “C:\Python38-32\Скачатьm3u\download_m3u.py”, line 56, in main
with open(chan, encoding = “utf-8”) as fc:
UnboundLocalError: local variable ‘chan’ referenced before assignment
>>>
Офлайн
if arguments >= 2: chan = args[2]
Офлайн
Уважаемый Romissevd
Подскажи как это исправить ?
Офлайн
Как пример, присвоить изначально chain значение None, и перед применением ее проверить, что если значение None прекратить выполнение функции, т.к. она дальше читает из файла
Офлайн
Спасибо.
Для меня это сложно.
Пожалуйста подскажите.
Отредактировано satfan (Май 9, 2020 18:25:31)
Офлайн