import module_name
, Питон ищет либо файл module_name.py, либо пакет module_name. Про пакеты пока говорить не будем. Если такой файл нашелся, и он ещё не был импортирован, то он выполняется в контексте импортирующего скрипта. При этом получается объект-модуль, и ссылка на него помещается в переменную module_name в импортирующем скрипте.# a.py
def somefunc():
print('Hi!')
print('a is executed')
# b.py
import a # >>> a is executed
a.somefunc() # >>> Hi!
# a.py
def somefunc():
print('Hi!')
print(__name__, 'is executed')
# b.py
import a # >>> a is executed
a.somefunc() # >>> Hi!
print('And I am', __name__) # >>> And I am __main__
# a.py
def somefunc():
print('Hi!')
print(__name__, 'is executed')
# b.py
# импортируем модуль и переименовываем его
import a as d # >>> a is executed
d.somefunc() # >>> Hi!
print('And I am', __name__) # >>> And I am __main__
# a.py
# Этот код выполнится в любом случае
def somefunc():
print('Hi!')
if __name__ == '__main__':
# этот код выполнится только если a выполняется непосредственно
print(__name__, 'is executed') # Всегда выведет __main__ is executed
else:
# а этот код выполнится только если a импортируется в другой модуль
print('Imported as', __name__)
# b.py
import a # >>> Imported as a
a.somefunc() # >>> Hi!
print('And I am', __name__) # >>> And I am __main__
Represents a discord bot.
This class is a subclass of discord.Client and as a result anything that you can do with a discord.Client you can do with this bot.
youtube-dl -v -r 1M -f best -c -i -w -o "%(title)s.%(ext)s" --download-archive archive.txt URL_канала_или_плейлиста
my_bat.bat < input.txt
где в input.txt будут вводимые значения, по порядку, каждое на отдельной строке. Если же стандартный ввод не используется, это не сработает. from os import path
def get_folder(fname: str) -> str:
... # тут будет код
base_folder = r'C:\тут\корневой\каталог\куда\складывать\файлы'
for file in files: #перебираешь список файлов, у тебя этот код уже есть
subpath = get_folder(path.basename(file))
if subpath is None: # если функция вернула None, игнорируем файл
continue
source_path = path.abspath(file)
target_path = path.join(base_folder, subpath)
# и переносишь/копируешь файл из source_path в target_path
\w+?(?P<Num>\d+)\.(?P<Ext>\w+)
import re
NAME = re.compile(r'\w+?(?P<Num>\d+)\.(?P<Ext>\w+)', re.I)
TYPES = { #сортировка по типам
'aac': 'AUDIO',
'mp4': 'VIDEO',
'jpg': 'IMAGES',
None: 'MISC', #всё остальное
}
def get_folder(fname: str) -> str:
m = NAME.match(fname) #пусть имя файла anything100.jpg
if m is None: #имя файла не по шаблону - непонятно что делать с файлом
return None # или говорим "не трогай файл"
#return f'{TYPES[None]}/{fname}' # или кидаем в папку для неразобранного
data = m.groupdict() # data = { 'Num': '100', 'Ext': 'jpg' }
data['File'] = fname # data = { 'Num': '100', 'Ext': 'jpg', 'File': 'anything100.jpg' }
data['Type'] = TYPES.get(data['Ext'].lower(), TYPES[None]) # data = { 'Num': '100', 'Ext': 'jpg', 'File': 'anything100.jpg' , 'Type': 'IMAGES' }
return '{Type}/{Type}{Num}/{File}'.format(**data) # IMAGES/IMAGES100/anything100.jpg
@bot.message_handler()
def start(message):
cursor = connection.cursor()
row = cursor.execute('SELECT фамилия FROM OPCFIO WHERE имя = %s LIMIT 1', (message.text,) ).fetchone()
if row is None:
# не нашли фамилию, реакцию на это пропиши сам
else:
last_name = row[0] # нашли, она лежит в last_name, делаем с ней что нужно