Найти - Пользователи
Полная версия: Скрипт выбора выдаёт ошибку
Начало » Python для новичков » Скрипт выбора выдаёт ошибку
1 2
satfan
Прошу подскажите.
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’
>>>
Как исправить ?
FishHook
satfan
SyntaxWarning: invalid escape sequence \%
экранируйте слеш
satfan
Исправил строку 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’
>>>
FishHook
satfan
FileNotFoundError: No such file or directory: ‘printer1.mu3’
Вы способны перевести это на русский самостоятельно?
satfan
Мой каталог: 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’
>>>
Что мне сделать ?

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

Давайте позовем Дашу-следопыта, чтобы она поискала четыре отличия!
satfan
Вариант 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
>>>



FishHook
satfan
UnboundLocalError: local variable ‘chan’ referenced before assignment

Вы понимаете, что здесь написано?
satfan
UnboundLocalError: локальная переменная “chan”,
на которую ссылаются перед присваиванием
————-
Если бы всё понимал, не спрашивал.
FishHook
Вы используете переменную, которую не объявили.
Вам дали даже имя переменной.

 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?

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