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, делаем с ней что нужно
Как только ответ от сервера приходит 200 - снова все продолжает работать.
while (true) {
data = query_server();
result = process_data(data);
send_result(result);
}
a = [a.copy() for i in range(k)]
#!/bin/bash
DNS_SERVER=8.8.8.8
BLACKLIST_URL="http://antizapret.prostovpn.org/iplist.txt"
#куда класть файл proxy.pac
PACDIR=/var/www/html
TMPLIST=/tmp/iplist.txt
#домены, которые нужно пускать через прокси независимо от содержимого iplist.txt
DOMAINS=(\
rutracker.org \
facebook.com \
facebook.net \
fbcdn.net \
twitter.com \
twitter.co \
t.co \
twimg.com \
twitpic.com \
periscope.tv \
pscp.tv \
)
#качаем чёрный список
wget -q --tries=10 -O "$TMPLIST" "$BLACKLIST_URL"
# вытаскиваем IP наших прописанных доменов
declare -a EXTRAIPS=()
for domain in "${DOMAINS[@]}"
do
dig A "$domain" +short @$DNS_SERVER | grep -v '\.$' >>"$TMPLIST"
done
#в чёрном списке есть отдельные IP и есть подсети
#также чёрный список очень длинный, поэтому кодируем его более компактно.
IPLIST=`grep -Ex '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' "$TMPLIST" | awk '/^[0-9]+/ {split($1,b,/\./); printf("0x%02x%02x%02x%02x,", b[1],b[2],b[3],b[4]);}'`
SUBNETLIST=`awk '/[0-9.]+\.[0-9]+\.[0-9]+\.[0-9]+\/[0-9]+/ {split($1,p,/\//); printf("[\"%s\", %s], ", p[1], p[2]);}' <"$TMPLIST"`
#генерируем proxy.pac по шаблону
#он проверяет домен на вхождение в фиксированные домены, а потом IP по списку.
function templatePAC {
NAME=$1
shift
DMNLIST=("$@")
cat >"$PACDIR/$NAME" <<EOF
function FindProxyForURL(url, host) {
var domainblacklist = [
EOF
for d in "${DMNLIST[@]}"
do
echo " '$d'," >>"$PACDIR/$NAME"
done
cat >>"$PACDIR/$NAME" <<EOF
];
var ipblacklist = [ $IPLIST ];
var subnetblacklist = [ $SUBNETLIST ];
function endsWith(str, suffix) {
return str.indexOf(suffix, str.length - suffix.length) !== -1;
}
function numberToMask(n) {
var m=[0,128,192,224,240,248,252,254,255];
var r=[];
for (var i=0; i<4; i++) {
var p = (n > 8) ? 8 : n;
r[i] = m[p];
n -= p;
}
return r.join(".");
}
function maskMatch(ip, mask) {
var m = numberToMask(mask[1]);
return isInNet(ip, mask[0], m);
}
var blocked = false;
for (var i=0; !blocked && (i<domainblacklist.length); i++)
blocked = blocked || ((host == domainblacklist[i]) || endsWith(host, '.'+domainblacklist[i]));
if (!blocked) {
var ip = dnsResolve(host);
for (var i=0; !blocked && (i<subnetblacklist.length); i++)
blocked = blocked || maskMatch(ip, subnetblacklist[i]);
blocked = blocked || (ipblacklist.indexOf(convert_addr(ip)) != -1);
}
if (blocked)
return "PROXY ТУТ_ТВОЙ_ПРОКСИ:ПОРТ";
else
return "DIRECT";
}
EOF
}
# генерируем файл
templatePAC proxy.pac "${DOMAINS[@]}"
rm -f "$TMPLIST"