from pathlib import Path
my_folder_path = Path('/home/pi/Desktop/bot2.0/photo')
my_file_path = my_folder_path / 'my_file_name.ext'
print(f'Для ясности можно залогировать путь по которому сохраняем: {my_file_path}')
my_file_path.write_bytes(downloaded_file)
-e, --editable Install a project in editable mode (i.e. setuptools "develop mode") from a local project path or a VCS url.
pip install --help
from SimpleQIWI import *
import sys
# TODO: переименовать. Большими буквами именуются обычно константы.
# здесь TOKEN лучше переименовать в token_file_name
TOKEN = input('Введите путь к токену : ')
PHONE = input('Введите номер телефона : ')
# TODO: Обработать ошибку загрузки токена
with open(TOKEN, 'r') as f:
# TODO: переименовать. get_token - это плохое имя переменной
# для хранения токена. Лучше просто token или auth_token
GET_TOKEN = f.readline()
# TODO: Обработать ошибку некорректного/просроченного токена
api = QApi(token=GET_TOKEN, phone=PHONE)
while True:
print('------------')
print('[1] - Посмотреть баланс', '\n[2] - Отправить деньги', '\n[3] - Получить входящие платежи', '\n[4] - Выход')
user = input()
if user == '1':
try:
print('------------', '\nВаш баланс составляет : ' + str( api.balance ))
except Exception:
# TODO: Исследовать классы возможных ошибок
# и сделать целевые обработчики на уровне итерации цикла
# чтобы не перегружать код этой обработкой
print('Error\n' + str( sys.exc_info()[ 1 ] ))
elif user == '2':
print( '------------', '\n')
# TODO: Сделать словарь с кэшем вводившихся ранее значений
# чтобы не вводить повторно при ошибках
payee_phone = input('Введите номер телефона получателя ( в международном формате + ) : ')
payee_amount = input('Введите сумму перевода ( в рублях ) : ')
payee_comment = input('Введите комментарий к переводу ( необязательно ) : ')
try:
api.pay(account=payee_phone, amount=payee_amount, comment=payee_comment)
except Exception:
print( 'Error\n' + str( sys.exc_info()[ 1 ] ) )
print( '\nЕсли вы указали свой номер, то платеж будет невозможен!' )
elif user == '3':
print( '------------\n' )
print( 'Функция временно не доступна' )
elif user == '4':
sys.exit()
else:
print( '\nТакого метода не существует!' )
def filename_key(fn: Path, root: Path = None) -> typing.Hashable:
def split(s: str, re_splitter=re.compile(r'(\D+|\d+)')) -> tuple:
return tuple(int(chunk) if chunk.isdigit() else chunk for chunk in re_splitter.split(s) if chunk)
rel_path = fn.relative_to(root) if root else fn
return tuple(split(name) for name in rel_path.parent.parts) + (split(rel_path.stem) + (rel_path.suffix,),)
my_files = (f for f in my_folder_path.rglob('*.mp3'))
my_sorted_files = sorted((
(filename_key(f, root=my_folder_path), f)
for f in my_files
))
import speech_recognition as sr
from time import sleep
import sys
def on_listen(recognizer, audio):
# print('on_listen')
try:
text = recognizer.recognize_google(audio, language='ru-RU').lower()
except sr.UnknownValueError as e:
pass
else:
print('Вы сказали:', text)
r = sr.Recognizer()
with sr.Microphone() as source:
r.pause_threshold = 1
print('Тихо...')
r.adjust_for_ambient_noise(source, duration=1)
print('Нажмите Enter для завершения')
print('Говорите...')
r.listen_in_background(sr.Microphone(), on_listen, phrase_time_limit=5)
input()
locals().update(var)
locals().update(abc=123) # создаст в локальном пространстве имён переменную `abc` со значением 123
class Timer(Thread):
"""Call a function after a specified number of seconds:
t = Timer(30.0, f, args=None, kwargs=None)
t.start()
t.cancel() # stop the timer's action if it's still waiting
"""
def __init__(self, interval, function, args=None, kwargs=None):
Thread.__init__(self)
self.interval = interval
self.function = function
self.args = args if args is not None else []
self.kwargs = kwargs if kwargs is not None else {}
self.finished = Event()
def cancel(self):
"""Stop the timer if it hasn't finished yet."""
self.finished.set()
def run(self):
self.finished.wait(self.interval)
if not self.finished.is_set():
self.function(*self.args, **self.kwargs)
self.finished.set()
def my_global_effect_function():
my_global_list.append('anything')
return 3
my_global_list = []
my_global_effect_function() + 5
import sys
import logging
if __name__ == '__main__':
log = logging.getLogger()
log.level = logging.DEBUG
log.addHandler(logging.StreamHandler(sys.stderr))
else:
log = logging.getLogger(__name__)
## Используем так:
log.info('any text')
log.debug('Something about %r in %s', log, __name__)
## Здесь размещаем весь остальной код
if __name__ == '__main__':
pass # А здесь, если надо, размещаем то, что будет выполняться, когда модуль запускают как скрипт
log = logging.getLogger(__name__)