Mit pip install
haben wir die Top 20 Pakete aus dem bekannten PyPi durch vollständige und wöchentliche Downloads extrahiert. Dies ist eine Zusammenfassung der Verwendung der 24 beliebten Pakete. Ich war überrascht über das Ergebnis von insgesamt 16 Überlappungen für die Woche. Ich wusste nicht, wie ich nur das pyasn1-Paket verwenden soll, das ASN.1 verarbeitet. Bitte lassen Sie es mich wissen.
1.simplejson Eine Bibliothek, die json codiert und decodiert. Wir sind stolz auf die Anzahl der DLs von mehr als 100 Millionen in dem Paket, das insgesamt und wöchentlich am besten ist. Nur aus Geschwindigkeitsgründen ist ujson schneller.
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)
Ausführungsergebnis
>>>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 Paketverwaltungssoftware. easy_install ist auch eine der Funktionen von setuptools. Es wird häufig zuerst installiert, um pip zu installieren, das auch Pakete verwaltet. Wenn Sie pip installieren, werden Setup-Tools installiert. Distribute wurde 2013 zu Setuptools zusammengeführt. Ab Python 3.4 ist pip im Python-Body enthalten. Einzelheiten finden Sie in PEP453.
3.requests Requests ist eine HTTP-Bibliothek, die für Benutzer einfach zu verwenden ist. Sie können HTTP GET, POST, Basisauthentifizierung und OAuth 2.0-Authentifizierung präzise schreiben.
requests_3.py
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import requests
import simplejson
#Code zu HTTP GET zu API, die mit dem Typ json antwortet
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 ist normal
assert response.status_code == 200
data = simplejson.loads(response.text)
print(type(data), data)
Ausführungsergebnis
>>>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 Sie können problemlos mehrere Python-Umgebungen auf einem Terminal erstellen. Ich wechsle zwischen der Python2.7 + Django1.5-Umgebung, der PyPy-Umgebung und der Python3.5-Umgebung.
Installation, Umgebungskonstruktion, Nutzung
# install
sudo pip install virtualenv
sudo pip install virtualenvwrapper
#Hoge Umweltbau
mkvirtualenv --python=/usr/local/bin/python3 hoge
#Umgebungsliste
workon
#Umgebungsumschaltung
workon hoge
#Raus aus der Umwelt
deactivate
5.distribute Paketverwaltungssoftware. Die Installation von pip installiert setuptools und verteilte wurde 2013 in setuptools zusammengeführt. Daher gibt es kein Problem, wenn die Paketverwaltung mit pip erfolgt.
6.six six ist eine Python 2- und 3-Kompatibilitätsbibliothek. Bietet Dienstprogrammfunktionen zum Schreiben eines einzelnen Codes, der sowohl in 2 als auch in 3 Systemen funktioniert.
six_6.py
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import six
#In einer Python2-Umgebung ausführen
print (six.PY2, six.PY3)
#Verwenden Sie die Meta-Klasse von 3 Serien in der Umgebung der Python2-Serie
class ABCMeta(type):
pass
@six.add_metaclass(ABCMeta)
class MyABC(object):
pass
abc = MyABC()
print abc
Ausführungsergebnis
>>>python six_6.py
(True, False)
<__main__.MyABC object at 0x101d02550>
7.pip Python-Paketverwaltungssoftware. Es gibt andere Paketverwaltungssoftware wie setuptools und Distribute, aber wenn Sie sich verlaufen, ist es meiner Meinung nach die richtige Antwort, pip zu verwenden, um die Pakete im Prinzip zu verwalten. Da easy_install unbeliebt war, wurde es entwickelt und ist in Python selbst ab Python 3.4 enthalten. Details PEP453
Holen Sie sich Pip selbst zu installieren-pip.Einfach zu bedienen py.
curl -kL https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python
8.certifi certifi ist eine Bibliothek, die die Authentizität von SSL-Zertifikaten mithilfe der Root Certification Authority (CA) genau überprüft. Anstatt es alleine zu verwenden, wird es oft gleichzeitig installiert, da es von anderen Bibliotheken abhängt.
certifi_8.py
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import certifi
#Root-Zertifizierungsstelle(CA)Geben Sie den Speicherort der Dateiinstallation von aus
print(certifi.where())
Ausführungsergebnis
>>>python ./certifi_8.py
/xxxxx/lib/python2.7/site-packages/certifi/cacert.pem
9.boto Eine Schnittstelle zum Betreiben von Amazon Web Services über Python. Nach meiner eigenen Erfahrung habe ich damit die Serverliste des Bereitstellungsziels aus dem zum Zeitpunkt der Bereitstellung in der EC2-Instanz festgelegten Tag abgerufen oder auf S3 zugegriffen und die Dateiliste abgerufen.
Zugriff auf s3 Bucket mit 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 Eine Bibliothek zur konsistenten Verwaltung von Setuptools. Sie können Paketinformationen in Setup.cfg im Metadata2.0-Format schreiben, ohne Paketinformationen in setup.py zu schreiben. Standardwerte werden in setup.cfg eingegeben, um das Format jeder Bibliothek zu vereinheitlichen.
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 Der wincert-Speicher bietet eine Schnittstelle für den Zugriff auf Windows CA-Zertifikate und CRLs (Certificate Revocation Lists). Anstatt es alleine zu verwenden, denke ich, dass es oft zusammen mit anderen Paketen installiert wird.
12.python-dateutil Erweitert das Python-Standardmodul datetime. Sie können das Monatsende berechnen, den "nächsten ◯ Tag" berechnen und den "letzten ◯ Tag des Monats" berechnen. Da ich es noch nie verwendet habe, habe ich es unter Bezugnahme auf Verwendung von Python-Dateutil implementiert.
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
#Berechnen Sie das Monatsende und geben Sie den 30. November ordnungsgemäß zurück
print "Monatsendberechnung:", date(2015, 11, 26) + relativedelta(day=31)
#Kehre nächsten Dienstag zurück
print "Nächsten Dienstag:", date(2015, 11, 28) + relativedelta(weekday=calendar.TUESDAY)
#Letzten Freitag im Monat
first_day = date(2015, 11, 1)
rdl = relativedelta(day=31, weekday=FR(-1))
print "Letzten Freitag im Monat:", first_day + rdl
Ausführungsergebnis
>>>python ./python-dateutil.py
Monatsendberechnung: 2015-11-30
Nächsten Dienstag: 2015-12-01
Letzten Freitag im Monat: 2015-11-27
13.Jinja2 Es ist eine Template-Engine von Python. Es kann mit Google App Engine verwendet werden. Wie das Dokument sagt: "Es ist eine Vorlagen-Engine, die sich der Django-Vorlage bewusst ist", kann es für Benutzer von Django einfach sein. In einem einfachen PJ denke ich, dass es eine Option sein wird, wenn es "Fett (Fett) mit Django" ist.
14.nose Ein Unit-Test-Framework, mit dem Unit-Tests einfach geschrieben werden können. Die Assert-Funktion ist für die einfache Verwendung ausreichend. Wenn Sie jedoch mehrere Testdateien generieren und alle gleichzeitig testen, können Sie mit dem Befehl nosetest alle py-Dateien testen, deren Dateinamen mit "test" beginnen.
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)
#Error
eq_(sum(0, 0), 10000)
def test_is_even(self):
ok_(is_even(2))
ok_(not is_even(3))
#Wenn Sie mit assert einen Fehler machen, funktioniert dieser nicht ordnungsgemäß
assert is_even(15)
Ausführungsergebnis
>>>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 Eine Bibliothek zum Parsen der XML-Syntax. Es wird häufig für spezialisiertere Bibliotheken verwendet, indem lxml umbrochen wird. Schöne Suppe kann ein typisches Beispiel sein.
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)
#Mit lxml analysieren
root = html.fromstring(response.text)
#Eine Tag-Ausgabe
anchors = root.xpath('//a')
for anchor in anchors:
print(anchor.attrib['href'])
Ausführungsergebnis
>>>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 Wenn Sie das Dokument im reStructuredText-Format definieren, können Sie HTML-, XML- und Latex-Dateien mit einer Quelle ausgeben.
17.MarkupSafe Sie können sichere Zeichenfolgen ausgeben, die im XML / HTML / XHTML-Format maskiert sind.
mks_17.py
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from markupsafe import Markup, escape
#Flucht
print "Escape-Ausgabe:", escape("<script>alert(document.cookie);</script>")
#Markieren Sie
tmpl = Markup("<em>%s</em>")
print "Markup-Ausgabe:", tmpl % "Peter > Lustig"
Ausführungsergebnis
>>>python ./mks_17.py
Escape-Ausgabe: <script>alert(document.cookie);</script>
Markup-Ausgabe: <em>Peter > Lustig</em>
18.pyasn1 ASN.1 ist eine Sprache zum "Definieren der Informationsstruktur". Die Informationen, deren Struktur durch ASN.1 definiert ist, werden als "ASN.1-Objekt" bezeichnet. pyasn1 ist eine Bibliothek zum Definieren von ASN.1 in Python. Ich habe es unter Bezugnahme auf PyASN1-Programmierhandbuch geschrieben. Bei guter Verwendung können Sie die Serialisierungs- und Deserialisierungsverarbeitung implementieren. Wenn jemand weiß, wie man es benutzt, lass es mich wissen.
pyasn1_18.py
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from pyasn1.type import univ
"""
Definition
;; 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
Ausführungsergebnis
>>>python ./pyasn1_18.py
13750000000
-63
19.PyYAML YAML ist ein Datenserialisierungsformat, das für die Lesbarkeit und Interaktion mit der Skriptsprache entwickelt wurde. PyYAML ist ein YAML-Parser für Python. Das API-Protokoll ist als yaml definiert und das gleiche Modell wird von Python und anderen Sprachen gemeinsam genutzt. Es wird verwendet, wenn Excel-Daten json zugeordnet werden.
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:Kampagnen-ID
type: int
- column: description
name:Detaillierte Erklärung der Kampagne
type: char
"""
y = yaml.load(yaml_str)
print type(y), y
Ausführungsergebnis
>>>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 Globale Zeitzonendefinition für Python. Beispielsweise verwalten Sie die Zeit normalerweise mit utc + 0, und Sie können den Prozess zur Ausgabe in der japanischen Zeit von utc + 9 nur dann präzise schreiben, wenn er angezeigt wird.
pytz_20.py
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from datetime import datetime
import pytz
#Standard
print datetime.now()
#Japan Zeit
jst = datetime.now(tz=pytz.timezone('Asia/Tokyo'))
print jst
#New Yorker Zeit
nyt = datetime.now(tz=pytz.timezone('US/Eastern'))
print nyt
#Zeitunterschied
print "diff:", nyt - jst
Ausführungsergebnis
>>>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
Python-Verschlüsselungs-Toolkit. Wir bieten eine Vielzahl von kryptografischen Algorithmen und Protokollen an.
Führen Sie eine AES-Ver- und Entschlüsselung durch
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from Crypto.Cipher import AES
import base64
import os
#Blockgröße des Verschlüsselungsobjekts; 16, 24, or 32 for AES
BLOCK_SIZE = 32
#Wenn es weniger als die Blocklänge ist, füllen Sie es mit Polsterung
PADDING = '{'
#Eine Funktion, die das Teil, das kleiner als die Blocklänge ist, mit Paddng füllt
pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * PADDING
#Funktionen zur Ver- und Entschlüsselung in base64
EncodeAES = lambda c, s: base64.b64encode(c.encrypt(pad(s)))
DecodeAES = lambda c, e: c.decrypt(base64.b64decode(e)).rstrip(PADDING)
#Generiere zufällig einen geheimen Schlüssel
secret = os.urandom(BLOCK_SIZE)
#Erstellen Sie ein Verschlüsselungsobjekt mit einem geheimen Schlüssel
cipher = AES.new(secret)
#Zeichenfolge verschlüsseln
encoded = EncodeAES(cipher, 'password')
print 'Encrypted string:', encoded
#Entschlüsseln Sie eine Zeichenfolge
decoded = DecodeAES(cipher, encoded)
print 'Decrypted string:', decoded
Ausführungsergebnis
>>>python ./aes_w10.py
Encrypted string: P2vLpfpZgQyh1DPiY7a9TQfjGIiw3HcCh1qBxBwvtBk=
Decrypted string: password
Externe Funktionsschnittstelle zum Aufrufen von C-Code.
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
Ausführungsergebnis
>>>python ./cffi_w16.py
hi there, world.
Sie können den Text auf der Konsole einfärben.
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 + 'Rotes Wort+Hayai Midori')
print(Style.DIM + '+Trübe Charaktere')
print(Style.RESET_ALL)
print('Textfarbe nach dem Zurücksetzen')
■ Ausführungsergebnis
RSA-Implementierung. Es unterstützt die Ver- und Entschlüsselung, Signatur- und Signaturüberprüfung sowie die Schlüsselgenerierung. ..
rsa_w20.py
# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
import rsa
#Schlüsselgenerierung
(bob_pub, bob_priv) = rsa.newkeys(512)
#Verschlüsselung
message = 'hello Bob!'.encode('utf8')
crypto = rsa.encrypt(message, bob_pub)
print crypto
#Verbund
message = rsa.decrypt(crypto, bob_priv)
print(message.decode('utf8'))
Ausführungsergebnis
>>>python ./rsa_w20.py
i??u)"?}%??4?????4????:?n?Z????A?6?>?XF[/?XA%usc?ؙ?
hello Bob!
PyPI Ranking Zusammenfassung der Python-Paketverwaltungstechnologie Verwendung von Python-Dateutil
Als der Beispielcode auf die PyPi-Startseite des Pakets geschrieben wurde, war es ziemlich einfach, sich einen Überblick zu verschaffen, und ich beschloss, ihn zu imitieren. Die 21. bis 50. Bibliothek im wöchentlichen Ranking war mit interessanten Bibliotheken wie SQLalchemy und Supervisord besetzt, daher möchte ich sie eines Tages verwenden.
Recommended Posts