[Unit]
Description=My Script Service
After=multi-user.target
[Service]
User=user # Имя пользователя, от имени которого будет запускаться команда, указанная в ExecStart
WorkingDirectory=/home/user/program # Директория, в которую будет осуществлён переход перед запуском
ExecStart=/home/user/program/venv/bin/python /home/user/program/webui.py
Restart=always # Всегда перезапускать скрипт при его падениях
[Install]
WantedBy=multi-user.target
/etc/systemd/system
с расширением .service
, например, /etc/systemd/system/my_program.service
.activate
для активации виртуального окружения, но вместо этого указывается полный путь к интерпретатору Python внутри этого виртуального окружения.WorkingDirectory
.Unit
в качестве After
задайте network-online.target
вместо multi-user.target
:After=network-online.target
И да, это не copy_as_html
copy_as_html
, но ей нужно передать аргументы {"enclosing_tags": true, "font_size": false}
, чтобы она работала в точности, как через контекстное меню. Например, для комбинации Ctrl+Shift+C пропишите в Preferences → Key bindings:[
{"keys": ["ctrl+shift+c"], "command": "copy_as_html", "args": {"enclosing_tags": true, "font_size": false} }
]
yt-dlp --split-chapters <ссылка на видео>
yt-dlp --split-chapters -x <ссылка на видео>
yt-dlp --split-chapters -x --audio-format mp3 <ссылка на видео>
--exec rm
(Linux) или --exec del
(Windows). >>> import inspect
>>> import requests
>>> print(inspect.getsource(requests.get))
def get(url, params=None, **kwargs):
r"""Sends a GET request.
:param url: URL for the new :class:`Request` object.
:param params: (optional) Dictionary, list of tuples or bytes to send
in the query string for the :class:`Request`.
:param \*\*kwargs: Optional arguments that ``request`` takes.
:return: :class:`Response <Response>` object
:rtype: requests.Response
"""
return request("get", url, params=params, **kwargs)
>>> import inspect
>>> print(inspect.getsource(sum))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.10/inspect.py", line 1139, in getsource
lines, lnum = getsourcelines(object)
File "/usr/lib/python3.10/inspect.py", line 1121, in getsourcelines
lines, lnum = findsource(object)
File "/usr/lib/python3.10/inspect.py", line 940, in findsource
file = getsourcefile(object)
File "/usr/lib/python3.10/inspect.py", line 817, in getsourcefile
filename = getfile(object)
File "/usr/lib/python3.10/inspect.py", line 797, in getfile
raise TypeError('module, class, method, function, traceback, frame, or '
TypeError: module, class, method, function, traceback, frame, or code object was expected, got builtin_function_or_method
In [1]: import requests
In [2]: %psource requests.get
def get(url, params=None, **kwargs):
r"""Sends a GET request.
:param url: URL for the new :class:`Request` object.
:param params: (optional) Dictionary, list of tuples or bytes to send
in the query string for the :class:`Request`.
:param \*\*kwargs: Optional arguments that ``request`` takes.
:return: :class:`Response <Response>` object
:rtype: requests.Response
"""
return request("get", url, params=params, **kwargs)
.decode()
, в одночасье обрабатывая ошибку UnicodeDecodeError
:with open('1.txt', 'rb') as file:
for n, binary_line in enumerate(file, start=1):
try:
line = binary_line.decode('utf-8')
except UnicodeDecodeError:
print(f'Ошибка декодирования строки {n}')
continue
...
--no-access-log
. Команда для запуска веб-сервера может выглядеть, например, так:uvicorn --no-access-log main:app
True
в значении нужного атрибута, если ожидаете, что он должен присутствовать у элемента:from bs4 import BeautifulSoup
document = """<tag a="1" b="2"/>
<tag a="2"/>
<tag a="3" b="4"/>
<tag a="4"/>
<tag a="5"/>
<tag a="6" b="6"/>
"""
soup = BeautifulSoup(document, 'html.parser')
for element in soup.find_all('tag', b=True):
print(element.get('b'))
from nltk.tokenize import word_tokenize
from nltk.stem import SnowballStemmer
# Список искомых слов
word_list = ['шалаши', 'инжир']
# Предложение для поиска
sentence = 'В шалаше шуршит шелками желтый дервиш из Алжира и, жонглируя ножами, штуку кушает инжира.'
# Разделить предложение на отдельные слова — токены
tokens = word_tokenize(sentence, language='russian')
snowball = SnowballStemmer(language='russian')
# Отбросить окончания слов предложения и слов из списка, после чего пересечь множества
stems_found = set(map(snowball.stem, tokens)) & set(map(snowball.stem, word_list))
print(stems_found)
{'инжир', 'шалаш'}
click
:element = driver.find_element(...)
element.click()
r'\'
), то если хотите написать обратную косую черту, вам нужно экранировать её такой же обратной косой чертой ('\\'
). И когда вы вводите символ "\" через сырую строку, Python при выводе внутреннего представления этой строки (representation, repr.) экранирует этот символ, что видно на вашем скриншоте.TextFilter
. Пример из официального репозитория:from telebot import TeleBot, types
from telebot.custom_filters import TextFilter
@bot.message_handler(is_reply=True,
text=TextFilter(starts_with=('!', '/', '.'), ends_with=['ban', 'бан'], ignore_case=True))
def ban_command_handler(message: types.Message):
if len(message.text) == 4 and message.chat.type != 'private':
try:
bot.ban_chat_member(message.chat.id, message.reply_to_message.from_user.id)
bot.reply_to(message.reply_to_message, 'Banned.')
except Exception as err:
print(err.args)
return