Avec pip install
, nous avons extrait les 20 meilleurs paquets du PyPi familier par téléchargements totaux et hebdomadaires. Ceci est un résumé de la façon d'utiliser les 24 packages populaires. J'ai été surpris du résultat de 16 chevauchements au total pour la semaine. Je ne savais pas comment utiliser uniquement le package pyasn1 qui gère ASN.1, alors faites-le moi savoir.
1.simplejson Une bibliothèque qui encode et décode json. Nous sommes fiers du nombre de DL de plus de 100 millions dans le package qui est le meilleur global et hebdomadaire. Pour la vitesse uniquement, ujson est plus rapide.
simplejson_1.py
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import simplejson
# dict to json
d = {i: i**3 for i in xrange(10)}
json_str = simplejson.dumps(d)
print(type(json_str), json_str)
# json to dict
json_dict = simplejson.loads(json_str)
print(type(json_dict), json_dict)
Résultat d'exécution
>>>python simplejson_1.py
(<type 'str'>, '{"0": 0, "1": 1, "2": 8, "3": 27, "4": 64, "5": 125, "6": 216, "7": 343, "8": 512, "9": 729}')
(<type 'dict'>, {'1': 1, '0': 0, '3': 27, '2': 8, '5': 125, '4': 64, '7': 343, '6': 216, '9': 729, '8': 512})
2.setuptools Logiciel de gestion de paquets. easy_install est également l'une des fonctionnalités de setuptools. Il est souvent installé en premier pour installer pip, qui gère également les packages. L'installation de pip installera les outils de configuration. distribuer a été fusionné avec setuptools en 2013. Depuis Python 3.4, pip est inclus dans le corps de Python. Voir PEP453 pour plus de détails.
3.requests Requests est une bibliothèque HTTP conçue pour être facile à utiliser pour les utilisateurs. Vous pouvez écrire de manière concise HTTP GET, POST, l'authentification de base et l'authentification OAuth 2.0.
requests_3.py
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import requests
import simplejson
#Code vers HTTP GET vers l'API qui répond avec le type json
host = "api-sandbox.oanda.com"
url = "https://{}/v1/candles?instrument=EUR_USD&count=100&candleFormat=midpoint&" \
"granularity=D&dailyAlignment=0&alignmentTimezone=America%2FNew_York".format(host)
response = requests.get(url)
#HTTP STATUS est normal
assert response.status_code == 200
data = simplejson.loads(response.text)
print(type(data), data)
Résultat d'exécution
>>>python ./requests_3.py
(<type 'dict'>, {u'instrument': u'EUR_USD', u'candles': [{u'complete': True, u'closeMid': 1.09102, u'highMid': 1.09347, u'lowMid': 1.084825, u'volume': 31402, u'openMid': 1.0863, u'time': u'2015-08-05T04:00:00.000000Z'}, {u'complete': True, u'closeMid': 1.09141, u'highMid': 1.0944, u'lowMid': 1.08735, u'volume': 22130, u'openMid': 1.09104, u'time':
...
4.virtualenv Vous pouvez facilement créer plusieurs environnements Python sur un seul terminal. Je bascule entre l'environnement Python2.7 + Django1.5, l'environnement PyPy et l'environnement Python3.5.
Installation, construction de l'environnement, utilisation
# install
sudo pip install virtualenv
sudo pip install virtualenvwrapper
#construction de l'environnement hoge
mkvirtualenv --python=/usr/local/bin/python3 hoge
#Liste d'environnement
workon
#Changement d'environnement
workon hoge
#Sortez de l'environnement
deactivate
5.distribute Logiciel de gestion de paquets. L'installation de pip installe setuptools et distribue a été fusionnée dans setuptools en 2013. Par conséquent, il n'y a aucun problème si la gestion des packages est effectuée avec pip.
6.six six est une bibliothèque de compatibilité Python 2 et 3. Fournit des fonctions utilitaires pour écrire un code unique qui fonctionne dans les systèmes 2 et 3.
six_6.py
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import six
#Exécuter dans l'environnement python2
print (six.PY2, six.PY3)
#Utilisez la classe méta de 3 séries dans l'environnement de la série python2
class ABCMeta(type):
pass
@six.add_metaclass(ABCMeta)
class MyABC(object):
pass
abc = MyABC()
print abc
Résultat d'exécution
>>>python six_6.py
(True, False)
<__main__.MyABC object at 0x101d02550>
7.pip Logiciel de gestion de packages Python. Il existe d'autres logiciels de gestion de paquets tels que setuptools et distribuer, mais si vous vous perdez, je pense que la bonne réponse est d'utiliser pip pour gérer les paquets en principe. Il y a un arrière-plan dans lequel il a été développé car easy_install était impopulaire et il a été inclus dans Python lui-même depuis Python 3.4. Détails PEP453
Installez pip lui-même-pip.Facile à utiliser py.
curl -kL https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python
8.certifi certifi est une bibliothèque qui vérifie précisément l'authenticité des certificats SSL à l'aide de l'autorité de certification racine (CA). Plutôt que de l'utiliser seul, il est souvent installé en même temps car il dépend d'autres bibliothèques.
certifi_8.py
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import certifi
#Autorité de certification racine(CA)Sortie de l'emplacement d'installation du fichier de
print(certifi.where())
Résultat d'exécution
>>>python ./certifi_8.py
/xxxxx/lib/python2.7/site-packages/certifi/cacert.pem
9.boto Une interface pour faire fonctionner Amazon Web Services à partir de Python. D'après ma propre expérience, je l'ai utilisé pour extraire la liste des serveurs de la destination de déploiement à partir de la balise définie dans l'instance EC2 au moment du déploiement, ou pour accéder à S3 et obtenir la liste des fichiers.
Accéder au seau s3 avec boto
import boto
from boto.s3.key import Key
import boto.s3.connection
AWS_ACCESS_KEY_ID = '<access key>'
AWS_SECRET_ACCESS_KEY = '<my secret key>'
Bucketname = 'Bucket-name'
conn = boto.s3.connect_to_region('ap-southeast-1',
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
is_secure=True, # uncommmnt if you are not using ssl
calling_format = boto.s3.connection.OrdinaryCallingFormat(),
)
bucket = conn.get_bucket(Bucketname)
10.pbr Une bibliothèque pour gérer de manière cohérente setuptools. Vous pouvez écrire les informations de package dans Setup.cfg au format Metadata2.0 sans écrire les informations de package dans setup.py. Les valeurs par défaut sont entrées dans setup.cfg pour unifier le format de chaque bibliothèque.
setup.py
import setuptools
from pbr import util
setuptools.setup(
**util.cfg_to_args())
setup.cfg
[metadata]
name = pbr
author = OpenStack
author-email = [email protected]
summary = Python Build Reasonableness
...
11.wincertstore Le magasin wincert fournit une interface pour accéder aux certificats d'autorité de certification Windows et aux CRL (listes de révocation de certificats). Plutôt que de l'utiliser seul, je pense qu'il est souvent installé avec d'autres packages.
12.python-dateutil Étend le module datetime standard Python. Vous pouvez calculer la fin du mois, calculer le «prochain ◯ jour» et calculer le «dernier ◯ jour du mois». Comme je ne l'ai jamais utilisé, je l'ai implémenté en me référant à Comment utiliser python-dateutil.
python-dateutil.py
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from dateutil.relativedelta import relativedelta, FR
from datetime import date
import calendar
#Calculez la fin du mois et renvoyez le 30 novembre correctement
print "Calcul de fin de mois:", date(2015, 11, 26) + relativedelta(day=31)
#Retour mardi prochain
print "Mardi prochain:", date(2015, 11, 28) + relativedelta(weekday=calendar.TUESDAY)
#Dernier vendredi du mois
first_day = date(2015, 11, 1)
rdl = relativedelta(day=31, weekday=FR(-1))
print "Dernier vendredi du mois:", first_day + rdl
Résultat d'exécution
>>>python ./python-dateutil.py
Calcul de fin de mois: 2015-11-30
Mardi prochain: 2015-12-01
Dernier vendredi du mois: 2015-11-27
13.Jinja2 C'est un moteur de template créé par Python. Il peut être utilisé avec Google App Engine. Comme le dit le document, "C'est un moteur de template qui est conscient de Django Template", cela peut être facile pour les personnes qui utilisent Django. Dans un simple PJ, je pense que ce sera une option quand ce sera "Fat (fat) with Django".
14.nose Un framework de test unitaire qui facilite l'écriture de tests unitaires. La fonction assert est suffisante pour une utilisation simple, mais lorsque vous générez plusieurs fichiers de test et que vous les testez tous à la fois, il est pratique d'utiliser la commande nosetest pour tester tous les fichiers py dont les noms de fichier commencent par "test".
test_nose_14.py
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from unittest import TestCase
from nose.tools import ok_, eq_
def sum(a, b):
return a + b
def is_even(n):
return (n % 2 == 0)
class HogeTestCase(TestCase):
def setUp(self):
print 'before test'
def tearDown(self):
print 'after test'
def test_sum(self):
eq_(sum(1, 2), 3)
eq_(sum(5, 11), 16)
eq_(sum(0, 0), 0)
#Erreur
eq_(sum(0, 0), 10000)
def test_is_even(self):
ok_(is_even(2))
ok_(not is_even(3))
#Si vous donnez une erreur avec assert, cela ne fonctionne pas correctement
assert is_even(15)
Résultat d'exécution
>>>nosetests
FF
======================================================================
FAIL: test_is_even (test_nose_14.HogeTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/xxxx/qiita/pypi_ranking/test_nose_14.py", line 33, in test_is_even
assert is_even(15)
AssertionError:
-------------------- >> begin captured stdout << ---------------------
before test
--------------------- >> end captured stdout << ----------------------
======================================================================
FAIL: test_sum (test_nose_14.HogeTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/xxxx/qiita/pypi_ranking/test_nose_14.py", line 27, in test_sum
eq_(sum(0, 0), 10000)
AssertionError: 0 != 10000
-------------------- >> begin captured stdout << ---------------------
before test
--------------------- >> end captured stdout << ----------------------
----------------------------------------------------------------------
Ran 2 tests in 0.005s
FAILED (failures=2)
15.lxml Une bibliothèque pour analyser la syntaxe XML. Il est souvent utilisé pour des bibliothèques plus spécialisées en enveloppant lxml. Beutiful Soup peut être un exemple typique.
lxml_15.py
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import requests
from lxml import html
# HTTP GET
url = "http://google.co.jp/"
response = requests.get(url)
#Analyser avec lxml
root = html.fromstring(response.text)
#Une sortie de balise
anchors = root.xpath('//a')
for anchor in anchors:
print(anchor.attrib['href'])
Résultat d'exécution
>>>python lxml_15.py
http://www.google.co.jp/imghp?hl=ja&tab=wi
http://www.google.co.jp/maps?hl=ja&tab=wl
https://play.google.com/?hl=ja&tab=w8
...
16.docutils Si vous définissez le document au format reStructuredText, vous pouvez générer des fichiers HTML, XML, Latex avec une seule source.
17.MarkupSafe Vous pouvez générer des chaînes sécurisées échappées au format XML / HTML / XHTML.
mks_17.py
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from markupsafe import Markup, escape
#échapper
print "Sortie d'échappement:", escape("<script>alert(document.cookie);</script>")
#Marquer
tmpl = Markup("<em>%s</em>")
print "Sortie de balisage:", tmpl % "Peter > Lustig"
Résultat d'exécution
>>>python ./mks_17.py
Sortie d'échappement: <script>alert(document.cookie);</script>
Sortie de balisage: <em>Peter > Lustig</em>
18.pyasn1 ASN.1 est un langage pour "définir la structure de l'information". Les informations dont la structure est définie par ASN.1 sont appelées "objet ASN.1". pyasn1 est une bibliothèque pour définir ASN.1 en python. Je l'ai écrit en référence au manuel du programmeur PyASN1. S'il est bien utilisé, je pense que vous pouvez implémenter le traitement de sérialisation et de désérialisation. Si quelqu'un sait comment l'utiliser, faites-le moi savoir.
pyasn1_18.py
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from pyasn1.type import univ
"""
Définition
;; values specification
age-of-universe INTEGER ::= 13750000000
mean-martian-surface-temperature INTEGER ::= -63
"""
ageOfUniverse = univ.Integer(13750000000)
print ageOfUniverse
meanMartianSurfaceTemperature = univ.Integer(-63)
print meanMartianSurfaceTemperature
Résultat d'exécution
>>>python ./pyasn1_18.py
13750000000
-63
19.PyYAML YAML est un format de sérialisation de données conçu pour la lisibilité humaine et l'interaction avec le langage de script. PyYAML est un analyseur YAML pour Python. Le protocole API est défini comme yaml et le même modèle est partagé entre Python et d'autres langages, et il est utilisé lors du mappage lorsque les données Excel sont converties en json.
pyyaml_19.py
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import yaml
yaml_str = """
fields:
- column: id
name: ID
type: int
validate:
unique: true
- column: campaign_id
name:ID de campagne
type: int
- column: description
name:Explication détaillée de la campagne
type: char
"""
y = yaml.load(yaml_str)
print type(y), y
Résultat d'exécution
>>>python ./pyyaml_19.py
<type 'dict'> {'fields': [{'column': 'id', 'validate': {'unique': True}, 'type': 'int', 'name': 'ID'}, {'column': 'campaign_id', 'type': 'int', 'name': u'\u30ad\u30e3\u30f3\u30da\u30fc\u30f3ID'}, {'column': 'description', 'type': 'char', 'name': u'\u30ad\u30e3\u30f3\u30da\u30fc\u30f3\u8a73\u7d30\u8aac\u660e'}]}
20.pytz Définition du fuseau horaire global pour Python. Par exemple, vous gérez généralement l'heure avec utc + 0, et vous pouvez écrire de manière concise le processus à sortir avec l'heure japonaise utc + 9 uniquement lorsqu'elle est affichée.
pytz_20.py
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from datetime import datetime
import pytz
#la norme
print datetime.now()
#Heure du Japon
jst = datetime.now(tz=pytz.timezone('Asia/Tokyo'))
print jst
#L'heure de New York
nyt = datetime.now(tz=pytz.timezone('US/Eastern'))
print nyt
#Différence de temps
print "diff:", nyt - jst
Résultat d'exécution
>>>python ./pytz_20.py
2015-11-20 13:56:54.633965
2015-11-20 13:56:54.661743+09:00
2015-11-19 23:56:54.665424-05:00
diff: 0:00:00.003681
Boîte à outils de chiffrement Python. Nous proposons une variété d'algorithmes et de protocoles cryptographiques.
Effectuer le cryptage et le décryptage AES
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from Crypto.Cipher import AES
import base64
import os
#Taille du bloc d'objet de chiffrement; 16, 24, or 32 for AES
BLOCK_SIZE = 32
#S'il est inférieur à la longueur du bloc, remplissez-le avec Padding
PADDING = '{'
#Une fonction qui remplit la pièce moins que la longueur du bloc avec Paddng
pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * PADDING
#Fonctions de cryptage et de décryptage en base64
EncodeAES = lambda c, s: base64.b64encode(c.encrypt(pad(s)))
DecodeAES = lambda c, e: c.decrypt(base64.b64decode(e)).rstrip(PADDING)
#Générer une clé secrète de manière aléatoire
secret = os.urandom(BLOCK_SIZE)
#Créer un objet Cipher avec une clé secrète
cipher = AES.new(secret)
#Crypter la chaîne
encoded = EncodeAES(cipher, 'password')
print 'Encrypted string:', encoded
#Décrypter une chaîne
decoded = DecodeAES(cipher, encoded)
print 'Decrypted string:', decoded
Résultat d'exécution
>>>python ./aes_w10.py
Encrypted string: P2vLpfpZgQyh1DPiY7a9TQfjGIiw3HcCh1qBxBwvtBk=
Decrypted string: password
Interface de fonction externe pour appeler le code C.
cffi_w16.py
from cffi import FFI
ffi = FFI()
ffi.cdef("""
int printf(const char *format, ...); // copy-pasted from the man page
""")
C = ffi.dlopen(None) # loads the entire C namespace
arg = ffi.new("char[]", "world") # equivalent to C code: char arg[] = "world";
C.printf("hi there, %s.\n", arg) # call printf
Résultat d'exécution
>>>python ./cffi_w16.py
hi there, world.
Vous pouvez colorer le texte sur la console.
colorama_w17
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from colorama import Fore, Back, Style
print(Fore.RED + 'Akairo!')
print(Back.GREEN + 'Mot rouge+Hayei Midori')
print(Style.DIM + '+Personnages brumeux')
print(Style.RESET_ALL)
print('Couleur du texte après réinitialisation')
■ Résultat de l'exécution
Implémentation RSA. Il prend en charge le cryptage et le décryptage, la vérification de la signature et de la signature et la génération de clés. ..
rsa_w20.py
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import rsa
#Génération de clés
(bob_pub, bob_priv) = rsa.newkeys(512)
#chiffrement
message = 'hello Bob!'.encode('utf8')
crypto = rsa.encrypt(message, bob_pub)
print crypto
#Composite
message = rsa.decrypt(crypto, bob_priv)
print(message.decode('utf8'))
Résultat d'exécution
>>>python ./rsa_w20.py
i??u)"?}%??4?????4????:?n?Z????A?6?>?XF[/?XA%usc?ؙ?
hello Bob!
PyPI Ranking Résumé de la technologie de gestion des packages Python Comment utiliser python-dateutil
Lorsque l'exemple de code a été écrit sur la page d'accueil PyPi du package, il était assez facile d'avoir une vue d'ensemble, j'ai donc décidé de l'imiter. Les 21e à 50e bibliothèques du classement hebdomadaire sont alignées avec des bibliothèques intéressantes telles que sqlalchemy et supervisord, donc j'aimerais les utiliser un jour.
Recommended Posts