Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
develop:pyton:sqlite [2022/12/10 15:35] admin |
develop:pyton:sqlite [2024/07/15 05:29] (текущий) admin |
||
---|---|---|---|
Строка 2: | Строка 2: | ||
- | ==== Модули/ | + | ===== Модули/ |
<code bash> | <code bash> | ||
# Установка модуля для конкретного python | # Установка модуля для конкретного python | ||
python3.8 -m pip install pyTelegramBotAPI | python3.8 -m pip install pyTelegramBotAPI | ||
- | |||
# Модуль для телеграм бота бота | # Модуль для телеграм бота бота | ||
pyTelegramBotAPI | pyTelegramBotAPI | ||
- | |||
# Модуль для json логов | # Модуль для json логов | ||
python-json-logger | python-json-logger | ||
+ | # Модуль для виндовых хостов | ||
+ | / | ||
+ | (узнать на каком именно питоне работает ансибл ansible --version) | ||
- | # | + | # |
- | + | pip3 install --upgrade pip | |
- | + | pip3 install --upgrade setuptools | |
- | # | + | |
- | + | ||
</ | </ | ||
- | < | ||
- | < | ||
- | </ | ||
- | + | ===== Аргументы командной строки | |
- | ==== Аргументы командной строки ==== | + | |
Параметры с префиксом тире необязательные, | Параметры с префиксом тире необязательные, | ||
- | |||
< | < | ||
* **name or flags** - или имя, или список строк опций, например foo или -f, --foo, | * **name or flags** - или имя, или список строк опций, например foo или -f, --foo, | ||
Строка 73: | Строка 65: | ||
- | ==== Web API === | ||
+ | ===== Zabbix Web API ===== | ||
< | < | ||
< | < | ||
Строка 126: | Строка 118: | ||
- | ==== SQLite ==== | + | ===== SQLite ===== |
< | < | ||
< | < | ||
Строка 157: | Строка 148: | ||
#for row in cur.fetchall(): | #for row in cur.fetchall(): | ||
# print(row)</ | # print(row)</ | ||
- | |||
# | # | ||
Строка 169: | Строка 159: | ||
#for member in r: | #for member in r: | ||
# print(member[0]+ ' -==- '+ member[1]) | # print(member[0]+ ' -==- '+ member[1]) | ||
- | |||
</ | </ | ||
Строка 203: | Строка 192: | ||
self.cur.execute(' | self.cur.execute(' | ||
return self.cur.fetchall(); | return self.cur.fetchall(); | ||
- | |||
- | |||
def main(): | def main(): | ||
Строка 243: | Строка 230: | ||
print(answer.json()); | print(answer.json()); | ||
print(' | print(' | ||
- | | ||
# | # | ||
- | |||
if __name__ == " | if __name__ == " | ||
Строка 253: | Строка 238: | ||
- | ==== Работа с текстом === | ||
+ | ===== Работа с текстом ===== | ||
< | < | ||
< | < | ||
Строка 320: | Строка 305: | ||
- | ==== e-mail === | + | ===== e-mail ===== |
< | < | ||
< | < | ||
Строка 329: | Строка 313: | ||
<code python> | <code python> | ||
# | # | ||
- | |||
import smtplib | import smtplib | ||
Строка 362: | Строка 345: | ||
server=" | server=" | ||
assert isinstance(send_to, | assert isinstance(send_to, | ||
- | |||
msg = MIMEMultipart() | msg = MIMEMultipart() | ||
msg[' | msg[' | ||
Строка 389: | Строка 371: | ||
- | ==== Файлы === | ||
+ | ===== Файлы ===== | ||
* **read()** - загружает **весь файл в ОЗУ** | * **read()** - загружает **весь файл в ОЗУ** | ||
* **readline()** - читает одну строчку | * **readline()** - читает одну строчку | ||
* **for line in file:** - цикл обработки всего файла построчно | * **for line in file:** - цикл обработки всего файла построчно | ||
- | * ** ** - | ||
- | |||
< | < | ||
< | < | ||
Строка 412: | Строка 392: | ||
- | ==== WSGI Server === | + | ===== WSGI Server |
Сервер может обрабатывать веб запросы, | Сервер может обрабатывать веб запросы, | ||
- | |||
Переменная **environ** содержит служебную информацию о клиенте\\ | Переменная **environ** содержит служебную информацию о клиенте\\ | ||
В **start_response** собсна помещаем ответ | В **start_response** собсна помещаем ответ | ||
- | |||
< | < | ||
< | < | ||
<code python> | <code python> | ||
# | # | ||
- | |||
import wsgiserver | import wsgiserver | ||
from wsgiref.simple_server import make_server, | from wsgiref.simple_server import make_server, | ||
Строка 446: | Строка 423: | ||
</ | </ | ||
</ | </ | ||
- | |||
Строка 453: | Строка 429: | ||
**raw** получаем вручную\\ | **raw** получаем вручную\\ | ||
**pip install beautifulsoup4**\\ | **pip install beautifulsoup4**\\ | ||
- | |||
<code python> | <code python> | ||
from bs4 import BeautifulSoup | from bs4 import BeautifulSoup | ||
Строка 498: | Строка 473: | ||
outfile.write('; | outfile.write('; | ||
count += 1 | count += 1 | ||
- | | ||
print(" | print(" | ||
- | |||
if __name__ == " | if __name__ == " | ||
Строка 508: | Строка 481: | ||
- | ==== Yandex Disk API === | ||
+ | ===== Yandex Disk API ===== | ||
< | < | ||
< | < | ||
Строка 566: | Строка 539: | ||
' | ' | ||
bar.finish() | bar.finish() | ||
- | |||
if __name__ == ' | if __name__ == ' | ||
Строка 572: | Строка 544: | ||
# | # | ||
</ | </ | ||
- | |||
{{: | {{: | ||
- | |||
</ | </ | ||
Строка 580: | Строка 550: | ||
< | < | ||
< | < | ||
- | |||
<code python> | <code python> | ||
# | # | ||
Строка 646: | Строка 615: | ||
create_folder(diskFolder) | create_folder(diskFolder) | ||
upload_file(uploadFilePath, | upload_file(uploadFilePath, | ||
- | | ||
- | |||
if __name__ == ' | if __name__ == ' | ||
Строка 658: | Строка 625: | ||
- | ==== Хеш функции. Hashlib === | + | ===== Хеш функции. Hashlib |
Читать файл лучше всего по блокам, | Читать файл лучше всего по блокам, | ||
Собсна каждый алгоритм имеет свою функцию, | Собсна каждый алгоритм имеет свою функцию, | ||
**digest()** - хеш в виде байтов, | **digest()** - хеш в виде байтов, | ||
- | |||
- | |||
< | < | ||
< | < | ||
Строка 677: | Строка 642: | ||
hsh.update(fileData) | hsh.update(fileData) | ||
result= hsh.hexdigest() | result= hsh.hexdigest() | ||
- | |||
print(result) | print(result) | ||
</ | </ | ||
Строка 687: | Строка 651: | ||
<code python> | <code python> | ||
# | # | ||
- | |||
import hashlib, argparse, os | import hashlib, argparse, os | ||
Строка 698: | Строка 661: | ||
# Хеш из проверяемого файла | # Хеш из проверяемого файла | ||
# | # | ||
- | |||
# Перебираем целевую папку | # Перебираем целевую папку | ||
for file in os.listdir(args.folder): | for file in os.listdir(args.folder): | ||
currentHash= GetHash(args.folder +'/' | currentHash= GetHash(args.folder +'/' | ||
print(file +' - '+ currentHash) | print(file +' - '+ currentHash) | ||
- | |||
def GetHash(fullFileName): | def GetHash(fullFileName): | ||
Строка 714: | Строка 675: | ||
break | break | ||
md5.update(fileData) | md5.update(fileData) | ||
- | | ||
return md5.hexdigest() | return md5.hexdigest() | ||
- | |||
if __name__ == " | if __name__ == " | ||
Строка 725: | Строка 684: | ||
- | + | ===== Работа с оболочкой ===== | |
- | ==== Работа с оболочкой === | + | |
< | < | ||
< | < | ||
Строка 737: | Строка 694: | ||
print(var.stdout) | print(var.stdout) | ||
</ | </ | ||
- | |||
Вывод сразу на консоль, | Вывод сразу на консоль, | ||
<code python> | <code python> | ||
import os | import os | ||
- | |||
os.system(" | os.system(" | ||
</ | </ | ||
Строка 748: | Строка 703: | ||
- | ==== Цвет текста === | + | ===== Цвет текста ===== |
< | < | ||
< | < | ||
Строка 764: | Строка 718: | ||
BOLD = ' | BOLD = ' | ||
UNDERLINE = ' | UNDERLINE = ' | ||
- | | ||
print(bcolors.HEADER+ 'This is test TeXt in color' | print(bcolors.HEADER+ 'This is test TeXt in color' | ||
print(bcolors.OKBLUE+ 'This is test TeXt in color' | print(bcolors.OKBLUE+ 'This is test TeXt in color' | ||
Строка 781: | Строка 734: | ||
<code python> | <code python> | ||
# | # | ||
- | |||
import subprocess, os | import subprocess, os | ||
- | |||
- | |||
glNameNewImport= "" | glNameNewImport= "" | ||
glSelectedMultip= "" | glSelectedMultip= "" | ||
Строка 800: | Строка 750: | ||
BOLD = ' | BOLD = ' | ||
UNDERLINE = ' | UNDERLINE = ' | ||
- | |||
def main(): | def main(): | ||
Строка 842: | Строка 791: | ||
# -= Создаем копированием новый импорт, | # -= Создаем копированием новый импорт, | ||
createNewImport() | createNewImport() | ||
- | |||
print(""" | print(""" | ||
Строка 854: | Строка 802: | ||
Общая конфигурация всех импортов: | Общая конфигурация всех импортов: | ||
Файл мультипликатор: | Файл мультипликатор: | ||
- | |||
Укажите \033[96mпараметры импорта в БД\033[0m в файле конфигурации импорта | Укажите \033[96mпараметры импорта в БД\033[0m в файле конфигурации импорта | ||
Используя Jmx-порт, | Используя Jmx-порт, | ||
- | |||
- | |||
def getNameNewImport(): | def getNameNewImport(): | ||
Строка 875: | Строка 820: | ||
print(bcolors.FAIL+ " | print(bcolors.FAIL+ " | ||
exit(1) | exit(1) | ||
- | |||
- | |||
def createNewImport(): | def createNewImport(): | ||
Строка 911: | Строка 854: | ||
multipConfig.write(Configuration) | multipConfig.write(Configuration) | ||
multipConfig.close() | multipConfig.close() | ||
- | |||
# Делаем запись о новом мультипе в общем конфиге | # Делаем запись о новом мультипе в общем конфиге | ||
Строка 950: | Строка 892: | ||
configFile.write(newText) | configFile.write(newText) | ||
configFile.close() | configFile.close() | ||
- | |||
- | |||
def getHostIP(): | def getHostIP(): | ||
Строка 996: | Строка 936: | ||
Параметры дефолтные (для импортов) | Параметры дефолтные (для импортов) | ||
""" | """ | ||
- | | ||
# Добавляем запись о новой шаре в конфиг самбы | # Добавляем запись о новой шаре в конфиг самбы | ||
newText= """ | newText= """ | ||
Строка 1073: | Строка 1012: | ||
configFile.write(newText) | configFile.write(newText) | ||
configFile.close() | configFile.close() | ||
- | |||
- | |||
def useExistMultip(): | def useExistMultip(): | ||
Строка 1094: | Строка 1031: | ||
os.system('/ | os.system('/ | ||
os.system('/ | os.system('/ | ||
- | |||
- | |||
def SelectMultipl(): | def SelectMultipl(): | ||
Строка 1141: | Строка 1076: | ||
exit(1) | exit(1) | ||
return 1 | return 1 | ||
- | |||
- | |||
def CreateFolder(fullPath): | def CreateFolder(fullPath): | ||
Строка 1151: | Строка 1084: | ||
if input(" | if input(" | ||
exit(1) | exit(1) | ||
- | |||
- | |||
def GetFreePorts(): | def GetFreePorts(): | ||
Строка 1177: | Строка 1108: | ||
glDictFreePorts[' | glDictFreePorts[' | ||
| | ||
- | |||
- | |||
def FindFreePort(listExistPorts, | def FindFreePort(listExistPorts, | ||
""" | """ | ||
Строка 1190: | Строка 1119: | ||
return str(int(listExistPorts[0])+ 1) | return str(int(listExistPorts[0])+ 1) | ||
+ | if __name__ == " | ||
+ | main() | ||
+ | </ | ||
+ | </ | ||
- | if __name__ | + | ===== Кодировка ===== |
- | main() | + | [[https:// |
+ | |||
+ | < | ||
+ | < | ||
+ | <code python> | ||
+ | # При открытии файла | ||
+ | with open(my_file, ' | ||
+ | ... | ||
+ | |||
+ | # Так же проблема может возникнуть при записи в консоль | ||
+ | # Ошибка " | ||
+ | # Смысл в том что python путает какую кодировку принимает консоль, | ||
+ | # можно установить через переменную окружения, | ||
+ | set PYTHONIOENCODING=UTF-8 & python make_backup.py | ||
</ | </ | ||
</ | </ | ||
- | ==== ==== | + | |
+ | ===== Ошибка при отсутствии lxml ===== | ||
+ | Была трабла при ее установке, | ||
+ | <code bash> | ||
+ | yum install python-devel | ||
+ | pip3 install -U pip setuptools | ||
+ | python3 -m pip install lxml | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== Ошибка при отсутствии lxml ===== | ||
< | < | ||
Строка 1207: | Строка 1165: | ||
</ | </ | ||
</ | </ | ||
- | |||