Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 2, 2020 15:10:53

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

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

Прошу подскажите.
IDLE (Python 3.8 32-bit)
===============
Запускаю скрипт:

 # -*- 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:])
Выдаёт ошибки:
>>>
Warning (from warnings module):
File “C:\Users\Александр\Desktop\printer1mu3\download_m3u.py”, line 45
pathTo = filepath2 + ‘\%s’ % os.path.basename(a.path)
SyntaxWarning: invalid escape sequence \%
>>>
====== RESTART: C:\Users\Александр\Desktop\printer1mu3\download_m3u.py ======
Traceback (most recent call last):
File “C:\Users\Александр\Desktop\printer1mu3\download_m3u.py”, line 87, in <module>
main(sys.argv)
File “C:\Users\Александр\Desktop\printer1mu3\download_m3u.py”, line 37, in main
with open(filepath1, encoding = “utf-8”) as fp:
FileNotFoundError: No such file or directory: ‘printer1.mu3’
>>>
Как исправить ?

Офлайн

#2 Июнь 2, 2020 15:16:08

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

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

satfan
SyntaxWarning: invalid escape sequence \%
экранируйте слеш



Офлайн

#3 Июнь 2, 2020 15:42:59

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

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

Исправил строку 45:

 pathTo = filepath2 + '\\%s' % os.path.basename(a.path)
Другая ошибка:
====== RESTART: C:\Users\Александр\Desktop\printer1mu3\download_m3u.py ======
Traceback (most recent call last):
File “C:\Users\Александр\Desktop\printer1mu3\download_m3u.py”, line 87, in <module>
main(sys.argv)
File “C:\Users\Александр\Desktop\printer1mu3\download_m3u.py”, line 37, in main
with open(filepath1, encoding = “utf-8”) as fp:
FileNotFoundError: No such file or directory: ‘printer1.mu3’
>>>

Офлайн

#4 Июнь 2, 2020 15:46:10

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

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

satfan
FileNotFoundError: No such file or directory: ‘printer1.mu3’
Вы способны перевести это на русский самостоятельно?



Офлайн

#5 Июнь 2, 2020 16:03:19

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

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

Мой каталог: C:\Users\Александр\Desktop\download
Создаю в нём пустой файл: printer1.mu3.txt
Всё равно ошибка:
======== RESTART: C:\Users\Александр\Desktop\download\download_m3u.py ========
Traceback (most recent call last):
File “C:\Users\Александр\Desktop\download\download_m3u.py”, line 87, in <module>
main(sys.argv)
File “C:\Users\Александр\Desktop\download\download_m3u.py”, line 37, in main
with open(filepath1, encoding = “utf-8”) as fp:
FileNotFoundError: No such file or directory: ‘printer1.mu3’
>>>
Что мне сделать ?

Отредактировано satfan (Июнь 2, 2020 16:12:44)

Офлайн

#6 Июнь 2, 2020 16:09:34

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

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

satfan
Создаю в нём пустой файл: printer1.mu3.txt
satfan
FileNotFoundError: No such file or directory: ‘printer1.mu3

Давайте позовем Дашу-следопыта, чтобы она поискала четыре отличия!



Офлайн

#7 Июнь 2, 2020 16:13:06

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

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

Вариант 2
Создаю файл: printer1.mu3
Опять ошибка:
>>>
======== RESTART: C:\Users\Александр\Desktop\download\download_m3u.py ========
Traceback (most recent call last):
File “C:\Users\Александр\Desktop\download\download_m3u.py”, line 87, in <module>
main(sys.argv)
File “C:\Users\Александр\Desktop\download\download_m3u.py”, line 56, in main
with open(chan, encoding = “utf-8”) as fc:
UnboundLocalError: local variable ‘chan’ referenced before assignment
>>>



Офлайн

#8 Июнь 2, 2020 16:41:11

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

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

satfan
UnboundLocalError: local variable ‘chan’ referenced before assignment

Вы понимаете, что здесь написано?



Офлайн

#9 Июнь 2, 2020 16:47:05

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

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

UnboundLocalError: локальная переменная “chan”,
на которую ссылаются перед присваиванием
————-
Если бы всё понимал, не спрашивал.

Офлайн

#10 Июнь 2, 2020 16:56:22

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

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

Вы используете переменную, которую не объявили.
Вам дали даже имя переменной.

 if arguments > 1:
    filepath1 = args[1]
if arguments >= 2:
    chan = args[2]
if arguments >= 3:
    filepath2 = args[3]
with open(chan, encoding = "utf-8") as fc:
		chName = fc.readline()
И как ваш код должен работать, если условие if arguments >= 2 не сработает? Что тогда будет передано в open?



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version