Bibliothèque standard Python: seconde moitié (mémo d'apprentissage Python ⑨)

Mise en forme de la sortie

reprlib, pprint, textwrap, locale, etc.


import reprlib
import pprint
import textwrap
import locale

#reprlib est repr()Dans une autre version de, l'énorme projet de pièce de conteneur est omis et affiché.
charset = reprlib.repr(set('supercalifragilisticexpialidocious'))
print(charset)
# {'a', 'c', 'd', 'e', 'f', 'g', ...}

#pprint affiche la structure des données de manière simple à comprendre
t = [[[['black', 'cyan'], 'white', ['green', 'red']], [['magenta', 'yellow'], 'blue']]]
pprint.pprint(t, width=30)
# [[[['black', 'cyan'],
#    'white',
#    ['green', 'red']],
#   [['magenta', 'yellow'],
#    'blue']]]

# textwrap.fill()Enveloppe chaque paragraphe pour l'adapter à la largeur spécifiée
doc = """The wrap() method is just like fill() except that it returns a list of strings instead of one big string with newlines to separate the wrapped lines."""
print(textwrap.fill(doc, width=40))
# The wrap() method is just like fill()
# except that it returns a list of strings
# instead of one big string with newlines
# to separate the wrapped lines.

#le lieu est une représentation nationale(Unité etc.)Peut être appelé
locale.setlocale(locale.LC_ALL, 'English_United States.1252')
conv = locale.localeconv()
x = 1234567.8
print(locale.format("%d", x, grouping=True))
# 1,234,567
print(locale.format_string("%s%.*f", (conv['currency_symbol'], conv['frac_digits'], x), grouping=True))
# $1,234,567.80

modèle

point

from string import Template
t = Template('${village}folk send $$10 to $cause.')
sentence = (t.substitute(village='Nottingham', cause='the ditch func'))

print(sentence)
# Nottinghamfolk send $10 to the ditch func.


#La méthode de substitution est-elle un dictionnaire d'espaces réservés?
#Si vous ne passez pas l'argument de mot-clé, KeyError se produira, donc
# safe_La méthode de remplacement peut être plus sûre
#S'il n'y a pas de données, l'espace réservé sera affiché tel quel
t = Template('Return the $item to $owner.')
d = dict(item='unladen swallow')
sentence = t.safe_substitute(d)

print(sentence)
# Return the unladen swallow to $owner.

Vous pouvez également changer le délimiteur au lieu de $ dans la sous-classe Template

Changer le numéro de fichier


import time, os.path
from string import Template

photofiles = ['img_1074.jpg', 'img_1076.jpg', 'img_1077.jpg']

class BatchRename(Template):
    delimiter = '%'

fmt = input('Comment renommez-vous(%d-Date%n-nombre%f-format): ')
#Comment renommez-vous(%d-Date%n-nombre%f-format): Ashley_%n%f 

t = BatchRename(fmt)
date = time.strftime('%d%b%y')

for i, filename in enumerate(photofiles):
    base, ext = os.path.splitext(filename)
    newname = t.substitute(d=date, n=i, f=ext)
    print('{0} --> {1}'.format(filename, newname))

# img_1074.jpg --> Ashley_0.jpg
# img_1076.jpg --> Ashley_1.jpg
# img_1077.jpg --> Ashley_2.jpg

Traitement des enregistrements de données binaires

Vous pouvez utiliser les modules struct`` pack () ʻet ʻunpack () pour traiter les enregistrements binaires de longueur variable.

Exemple de bouclage de chaque information d'en-tête du fichier zip



import struct

# rb:Lire en binaire
with open('myfile.zip', 'rb') as f:
    data = f.read()

start = 0

for i in range(3): #Affiche les en-têtes des trois premiers fichiers
    start += 14
    fields = struct.unpack('<IIIHH', data[start:start+16])
    crc32, comp_size, uncomp_size, filenamesize, extra_size = fields

    start += 16
    filename = data[start:start+filenamesize]
    start += filenamesize
    extra = data[start:start+extra_size]
    print(filename, hex(crc32), comp_size, uncomp_size)

    start += extra_size + comp_size #Passer à l'en-tête suivant

Multithread

point

import threading, zipfile

class AsyncZip(threading.Thread):
    def __init__(self, infile, outfile):
        threading.Thread.__init__(self)
        self.infile = infile
        self.outfile = outfile
    def run(self):
        f = zipfile.ZipFile(self.outfile, 'w', zipfile.ZIP_DEFLATED)
        f.write(self.infile)
        f.close()
        print('Finished background zip of:', self.infile)

background = AsyncZip('mydata.txt', 'myarchive.zip')
background.start()
print('Le programme principal est en cours d'exécution')

background.join() #Attendez que la tâche d'arrière-plan se termine

print('Le programme principal attendait la fin du traitement en arrière-plan')

Journal

point

import logging

logging.debug('Debugging information')
logging.info('Informational message')
logging.warning('Warning: config file %s not found', 'server.conf')
logging.error('Error occurred')
logging.critical('Critical error -- shutting down')

# WARNING:root:Warning: config file server.conf not found
# ERROR:root:Error occurred
# CRITICAL:root:Critical error -- shutting down

Référence faible

import weakref, gc

class A:
    def __init__(self, value):
        self.value = value
    def __repr__(self):
        return str(self.value)

a = A(10) #Générer une référence
d = weakref.WeakValueDictionary()
d['primary'] = a #Ne générez pas de référence
print(d['primary']) #Récupérez l'objet s'il est vivant
10

del a #Supprimer la référence
gc.collect() #Exécuter le ramasse-miettes

d['primary'] #L'entrée a été supprimée automatiquement
# Traceback (most recent call last):
#   File ".\weakref_sample.py", line 17, in <module>
#     d['primary'] #L'entrée a été supprimée automatiquement
#   File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.1520.0_x64__qbz5n2kfra8p0\lib\weakref.py", line 137, in __getitem__      
#     o = self.data[key]()
# KeyError: 'primary'

Outil de manipulation de liste


from array import array

a = array('H', [4000, 10, 700, 22222])
print(sum(a))
# 26932

print(a[1:3])
# array('H', [10, 700])

from collections import deque
d = deque(["task1", "task2", "task3"])
d.append("task4")
print("Handling", d.popleft())

unsearched = deque([starting_node])
def breadth_first_search(unsearched):
    node = unsearched.popleft()
    for m in gen_moves(node):
        if is_goal(m):
            return m
        unsearched.append(m)

Calcul en virgule flottante des nombres décimaux

Recommended Posts

Bibliothèque standard Python: seconde moitié (mémo d'apprentissage Python ⑨)
Bibliothèque standard Python: première moitié (mémo d'apprentissage Python ⑧)
Classe Python (mémo d'apprentissage Python ⑦)
Module Python (mémo d'apprentissage Python ④)
Mémo d'étude Python & Machine Learning ②: Introduction de la bibliothèque
Gestion des exceptions Python (mémo d'apprentissage Python ⑥)
Syntaxe de contrôle Python, fonctions (mémo d'apprentissage Python ②)
Entrée / sortie avec Python (mémo d'apprentissage Python ⑤)
<Pour les débutants> bibliothèque python <Pour l'apprentissage automatique>
Mémo d'apprentissage de la planification des sections ~ par python ~
Mémo d'apprentissage "Scraping & Machine Learning avec Python"
(python) Principes de base du chaînage de la bibliothèque d'apprentissage en profondeur
Mémo Python
mémo python
Mémo Python
mémo python
apprentissage de python
Mémo Python
Mémo Python
Mémo d'étude Python & Machine Learning: Préparation de l'environnement
[Mémo d'apprentissage] Bases de la classe par python
Structure et fonctionnement des données Python (mémo d'apprentissage Python ③)
Mémo d'étude Python & Machine Learning ③: Réseau neuronal
Mémo d'étude Python & Machine Learning ④: Machine Learning par rétro-propagation
Mémo d'étude Python & Machine Learning ⑥: Reconnaissance des nombres
Bibliothèque de messagerie Python 3.6
Note d'étude LPIC201
[Python] Note d'apprentissage 1
Bibliothèque Python AST
mémo débutant python (9.2-10)
Mémo d'apprentissage Django
Mémo d'étude Python & Machine Learning ⑤: Classification d'Ayame
mémo débutant python (9.1)
sortie d'apprentissage python
[Python] Entrée standard
★ Mémo ★ Python Iroha
Apprentissage Python jour 4
Prédire les prix des logements (apprentissage automatique: deuxième semestre) ver1.1
[Python] Mémo EDA
Apprentissage en profondeur Python
Mémo opérateur Python 3
Inconnu de manière inattendue!? Fonction de bibliothèque standard Python groupby
Note sur la bibliothèque Python
apprentissage python (supplément)
Essayez Juniper JUNOS PyEz (bibliothèque python) Note 1 ~ Présentation de PyEz ~
Apprentissage profond × Python
[Memo] Apprentissage automatique
[Mon mémo] python
Mémo de métaclasse Python3
[Python] Mémo de fond de carte
mémo d'apprentissage progate Python (mis à jour de temps en temps)
Mémo d'étude Python & Machine Learning ⑦: Prévision du cours de l'action
Mémo débutant Python (2)
notes d'apprentissage python
[Python] Mémo Numpy
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer du chapitre 2
Peut être utilisé chez les pros de la compétition! Bibliothèque standard Python
Mémo de construction d'environnement d'apprentissage automatique par Python
[Redash] La bibliothèque standard ne peut pas être utilisée dans la fonction python