>>> import urllib.request
>>> import urllib.parse
>>> params = urllib.parse.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
>>> url = "http://www.musi-cal.com/cgi-bin/query?%s" % params
>>> with urllib.request.urlopen(url) as f:
... print(f.read().decode('utf-8'))
Что не так?
print(html.read().decode('utf-8'))
from contextlib import closing
with closing(psycopg2.connect(...)) as conn:
with conn.cursor() as cursor:
cursor.execute('SELECT * FROM users LIMIT 5')
for row in cursor:
print(row)
from psycopg2.pool import ThreadedConnectionPool
from psycopg2.extras import RealDictCursor
from contextlib import contextmanager
from urllib.parse import urlparse
DATABASE_URL = 'postgresql://postgres:postgres@localhost/postgres'
url = urlparse(DATABASE_URL)
pool = ThreadedConnectionPool(1, 50,
database=url.path[1:],
user=url.username,
password=url.password,
host=url.hostname,
port=url.port)
@contextmanager
def get_db_connection():
try:
connection = pool.getconn()
yield connection
finally:
pool.putconn(connection)
@contextmanager
def get_db_cursor(commit=False):
with get_db_connection() as connection:
cursor = connection.cursor(cursor_factory=RealDictCursor)
try:
yield cursor
if commit:
connection.commit()
finally:
cursor.close()
# Пример использования
with get_db_cursor() as cursor:
cursor.execute("SELECT city, temp_lo, temp_hi, date FROM weather;")
data = cursor.fetchone()
with get_db_cursor(commit=True) as cursor:
cursor.callproc("SOME_PROC_NAME")
flask его просто не видит
# структура проекта
├── api.py
├── app.py
├── config.py
├── __init__.py
├── start.sh
├── templates
├── venv
└── views.py
# api.py
from flask import Blueprint, jsonify
api = Blueprint('api', __name__)
@api.route('/')
def index():
return jsonify({'api': {'version': 1.1}})
# app.py
from flask import Flask
from .views import blog
from .api import api
app = Flask(__name__)
app.config.from_pyfile('config.py')
app.register_blueprint(blog)
app.register_blueprint(api, url_prefix='/api/v1')
# views.py
from flask import Blueprint, render_template, abort
from jinja2 import TemplateNotFound
blog = Blueprint('blog', __name__, template_folder='templates')
@blog.route('/')
def show():
try:
return render_template('index.html')
except TemplateNotFound:
abort(404)
# start.sh
#!/bin/sh
. venv/bin/activate
export FLASK_ENV=development
python -m flask run
я читал этот раздел. Мне надо, чтобы бот отвечал именно так после команды /cup. А просто текст он должен обрабатывать по другому.
@bot.message_handler(commands=['cup'])
def command_start(m):
... # тут твой код
# default handler for every other text
@bot.message_handler(func=lambda message: True, content_types=['text'])
def command_default(m):
# this is the standard reply to a normal message
bot.send_message(m.chat.id, "I don't understand \"" + m.text + "\"\nMaybe try the help page at /help")
text = json_data['response'][1]['text']
Note By default, the __hash__() values of str, bytes and datetime objects are “salted” with an unpredictable random value. Although they remain constant within an individual Python process, they are not predictable between repeated invocations of Python.
This is intended to provide protection against a denial-of-service caused by carefully-chosen inputs that exploit the worst case performance of a dict insertion, O(n^2) complexity. See www.ocert.org/advisories/ocert-2011-003.html for details.
Changing hash values affects the iteration order of dicts, sets and other mappings. Python has never made guarantees about this ordering (and it typically varies between 32-bit and 64-bit builds).
See also PYTHONHASHSEED.
Hashids is a small open-source library that generates short, unique, non-sequential ids from numbers.
Как скопировать файл с помощью Python?Зачем это делать Питоном?
scp -P 22 user@your-domain.ru:/home/user/projects/this_file.tar ~/backup/this_file.tar
*/30 * * * * /home/user/backup_data_from_server.sh
backup_data_from_server.sh
mv ~/backup/this_file.tar "/full_path_to/backup/this_file.tar.backup.$(date +%F_%R)"
sentence = ' hello Alice'
" ".join(sentence.split())
>>> 'hello Alice'
Return a copy of the string with all the cased characters converted to lowercase.
The lowercasing algorithm used is described in section 3.13 of the Unicode Standard.
В Python 2.6 и в более ранних версиях способ упорядочения основан на именах типов, вовлеченных в операцию сравнения, например любые целые числа всегда меньше любых строк, потому что строка “int” меньше, чем строка “str”.
При выполнении операции сравнения никогда не выполняется преобразование типов объектов, за исключением сравнивания объектов числовых типов.
В Python 3.0 такой порядок был изменен: попытки сравнивания объектов различных типов возбуждают исключение – вместо сравнивания по названиям типов. Так как метод сортировки использует операцию сравнения, это означает, что инструкция[1, 2, ‘spam’].sort()
будет успешно выполнена в Python 2.X, но возбудит исключение в версии Python 3.0 и выше.
Кроме того, в версии Python 3.0 больше не поддерживается возможность передачи методу sort произвольной функции сравнения, для реализации иного способа упорядочения.
Чтобы обойти это ограничение, предлагается использовать именованный аргумент key=func, в котором предусматривать возможность трансформации значений в процессе сортировки.
print("Enter/Paste your content. Ctrl-D or Ctrl-Z ( windows ) to save it.")
contents = []
while True:
try:
line = input()
except EOFError:
break
contents.append(line)
print "Enter/Paste your content. Ctrl-D or Ctrl-Z ( windows ) to save it."
contents = []
while True:
try:
line = raw_input("")
except EOFError:
break
contents.append(line)