Уведомления

Группа в Telegram: @pythonsu

#1 Май 7, 2020 19:17:28

satfan
Зарегистрирован: 2019-02-02
Сообщения: 140
Репутация: +  -2  -
Профиль   Отправить e-mail  

Скрипт выдаёт ошибку

Прошу подскажите .
Не срабатывает скрипт.

 # -*- 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:])
Выдаёт ошибки:
============= 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 37, in main
with open(filepath1, encoding = “utf-8”) as fp:
FileNotFoundError: No such file or directory: ‘printer1.mu3’
>>>

Офлайн

#2 Май 7, 2020 20:07:42

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Скрипт выдаёт ошибку

satfan
ну вам же написано что нет такого файла printer1.mu3 который вы пытаетесь открыть в 37 строке кода

Офлайн

#3 Май 7, 2020 20:13:01

satfan
Зарегистрирован: 2019-02-02
Сообщения: 140
Репутация: +  -2  -
Профиль   Отправить e-mail  

Скрипт выдаёт ошибку

Создал этот файл.
Следующая ошибка:
============= 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
>>>

Офлайн

#4 Май 7, 2020 21:23:49

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

Скрипт выдаёт ошибку

 	if arguments >= 2:
		chan = args[2]
Переменную chan ты определил(а) в блоке if. А если условие твоего if не выполнится, то и переменной с именем chan не будет соответственно.

Офлайн

#5 Май 7, 2020 21:26:00

satfan
Зарегистрирован: 2019-02-02
Сообщения: 140
Репутация: +  -2  -
Профиль   Отправить e-mail  

Скрипт выдаёт ошибку

Уважаемый Romissevd
Подскажи как это исправить ?

Офлайн

#6 Май 7, 2020 21:31:00

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

Скрипт выдаёт ошибку

Как пример, присвоить изначально chain значение None, и перед применением ее проверить, что если значение None прекратить выполнение функции, т.к. она дальше читает из файла

Офлайн

#7 Май 8, 2020 06:38:35

satfan
Зарегистрирован: 2019-02-02
Сообщения: 140
Репутация: +  -2  -
Профиль   Отправить e-mail  

Скрипт выдаёт ошибку

Спасибо.
Для меня это сложно.
Пожалуйста подскажите.

Отредактировано satfan (Май 9, 2020 18:25:31)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version