Найти - Пользователи
Полная версия: Скрипт выдаёт ошибку
Начало » Python для новичков » Скрипт выдаёт ошибку
1
satfan
Прошу подскажите .
Не срабатывает скрипт.
 # -*- 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’
>>>
marvellik
satfan
ну вам же написано что нет такого файла printer1.mu3 который вы пытаетесь открыть в 37 строке кода
satfan
Создал этот файл.
Следующая ошибка:
============= 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
>>>
Romissevd
 	if arguments >= 2:
		chan = args[2]
Переменную chan ты определил(а) в блоке if. А если условие твоего if не выполнится, то и переменной с именем chan не будет соответственно.
satfan
Уважаемый Romissevd
Подскажи как это исправить ?
Romissevd
Как пример, присвоить изначально chain значение None, и перед применением ее проверить, что если значение None прекратить выполнение функции, т.к. она дальше читает из файла
satfan
Спасибо.
Для меня это сложно.
Пожалуйста подскажите.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB