import os
# выходим на верхний уровень
parentdir = os.path.dirname(os.path.dirname(__file__))
# и добавляем его к путям поиска
os.sys.path.insert(0,parentdir)
# после чего можем использовать импорт по вложенному пути
import module_name.module.ModuleFileOne
def save_file():
filepath = filedialog.asksaveasfilename()
if filepath != "":
text = text_editor.get("1.0", END)
with open(filepath, "w") as file:
mistakes = spell.unknown(text.split())
file.write("Ошибки: " + str(mistakes))
# перебираем пословно и заменяем слово, если его считает некорректным
result = []
for word in text.split():
correct = spell.correction(word)
# берем просто изначальное слово, если корректор не нашел его в словаре
result.append(correct if correct else word)
file.write("\n")
file.write("Правильное написание: " + ' '.join(result))
from urllib.parse import urlencode
params = {
"text": 'russia',
"day": 1,
"month": 1
}
param_str = urlencode(params)
# формируем полную ссылку
api_url = f'https://api.api-ninjas.com/v1/historicalevents?{param_str}'
print(api_url) # https://api.api-ninjas.com/v1/historicalevents?text=russia&day=1&month=1
for book, user in zip(books, itertools.cycle(users)):
user["books"].append(
{
"title": book["Title"],
"author": book["Author"],
"pages": book["Pages"],
"genre": book["Genre"],
}
)
json.dump(users, result_json, indent=4)
return self.cursor.execute(f'INSERT INTO orders ("order", name, tg, number, amount, promo, date) VALUES (?, ?, ?, ?, ?, ?, ?)',
[order, name, tg, number, amount, promo, date])
@bot.on.message(text=["Призми погладить", "Рп погладить", "[id{user_id}|Фурина]"])
async def pat_user(message: Message):
# Проверяем, было ли упоминание пользователя через @
mentioned_user_id = None
mentioned_users = re.findall(r'\[id(\d+)\|.*?\]', message.text)
if mentioned_users:
mentioned_user_id = mentioned_users[0]
@bot.on.message(text=["Рп погладить [id<mentioned_user_id>|<mentioned_user_name>]", "Призми погладить", "Рп погладить"])
async def pat_user(message: Message, mentioned_user_id=None, mentioned_user_name=None):
mentioned_user_id ... # уже можно использовать напрямую
# можно и само имя использовать, если вдруг пригодится mentioned_user_name
sheet.merge_cells(start_row=start_row_index + 1, start_column=1, end_row=row_index + 1, end_column=1)
from itertools import groupby
# из текущего кода убираем все merge_cells, а затем уже после цикла for row_index in ...
# проходимся по всем повторениям (используем группировку groupby)
idx = 2
for k, g in groupby(temp[1:], key = lambda x: x[0]):
# количество повторяющихся значений
cnt = len(list(g))
if cnt > 1:
sheet.merge_cells(start_row=idx, start_column=1, end_row=idx+cnt-1, end_column=1)
idx += cnt
intents.messages = True
intents.message_content = True
+---------------------------+---------+----------------+
| {%tr for row in data %} | | |
+---------------------------+---------+----------------+
| {%tc for col in row %} | {{col}} | {%tc endfor %} |
+---------------------------+---------+----------------+
| {%tr endfor %} | | |
+---------------------------+---------+----------------+
with open('merged.json', 'a+', encoding='utf-8') as hml:
d = json.load(hml)
hml.seek(0)
text = re.sub('[–—!"#$%&()*,-./:;<=>@[\\]^_`{|}~\t\n\xa0–\ufeff]', '', str(text))
# класс для загрузки файла
from aiogram.types import InputFile
...
# его и используем для загрузки нашего файла
await bot.send_photo(message.chat.id, InputFile(text1))
Я понимаю, как tail меняется и зачем это нужно, но как head становится без дублей - не понимаю.
tail.next = current.next
file = open('pon.jpg' , 'rb')
file.read()
file.seek(0)
file.read()
@bot.message_handler(commands=['start'])
def first(message):
with open('pon.jpg' , 'rb') as file:
bot.send_photo(message.chat.id , file)