Python-Standardbibliothek: zweite Hälfte (Python-Lernnotiz ⑨)

Ausgangsformung

reprlib, pprint, textwrap, locale usw.


import reprlib
import pprint
import textwrap
import locale

#Reprlib ist Repr()In einer anderen Version von wird das riesige Containerteilprojekt weggelassen und angezeigt.
charset = reprlib.repr(set('supercalifragilisticexpialidocious'))
print(charset)
# {'a', 'c', 'd', 'e', 'f', 'g', ...}

#pprint zeigt die Datenstruktur leicht verständlich an
t = [[[['black', 'cyan'], 'white', ['green', 'red']], [['magenta', 'yellow'], 'blue']]]
pprint.pprint(t, width=30)
# [[[['black', 'cyan'],
#    'white',
#    ['green', 'red']],
#   [['magenta', 'yellow'],
#    'blue']]]

# textwrap.fill()Umschließt jeden Absatz mit der angegebenen Breite
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.

#Gebietsschema ist eine nationale Vertretung(Einheit usw.)Kann angerufen werden
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

Vorlage

Punkt

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.


#Ist die Ersatzmethode ein Wörterbuch mit Platzhaltern?
#Wenn Sie das Schlüsselwortargument nicht übergeben, tritt KeyError auf
# safe_Die Ersatzmethode kann sicherer sein
#Wenn keine Daten vorhanden sind, wird der Platzhalter unverändert ausgegeben
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.

Sie können auch das Trennzeichen anstelle von $ in der Vorlagenunterklasse ändern

Ändern Sie die Dateinummer


import time, os.path
from string import Template

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

class BatchRename(Template):
    delimiter = '%'

fmt = input('Wie benennst du um?(%d-Datum%n-Nummer%f-Format): ')
#Wie benennst du um?(%d-Datum%n-Nummer%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

Verarbeitung von Binärdatensätzen

Sie können die struct modules pack () undunpack ()verwenden, um Binärdatensätze variabler Länge zu verarbeiten.

Beispiel für das Schleifen jeder Header-Information der Zip-Datei



import struct

# rb:Binär lesen
with open('myfile.zip', 'rb') as f:
    data = f.read()

start = 0

for i in range(3): #Zeigt die Header der ersten drei Dateien an
    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 #Zum nächsten Header springen

Multi Thread

Punkt

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('Das Hauptprogramm läuft')

background.join() #Warten Sie, bis die Hintergrundaufgabe abgeschlossen ist

print('Das Hauptprogramm wartete auf das Ende der Hintergrundverarbeitung')

Log

Punkt

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

Schwache Referenz

import weakref, gc

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

a = A(10) #Generieren Sie eine Referenz
d = weakref.WeakValueDictionary()
d['primary'] = a #Generieren Sie keine Referenz
print(d['primary']) #Holen Sie sich das Objekt, wenn es lebt
10

del a #Referenz löschen
gc.collect() #Führen Sie die Speicherbereinigung aus

d['primary'] #Eintrag wurde automatisch gelöscht
# Traceback (most recent call last):
#   File ".\weakref_sample.py", line 17, in <module>
#     d['primary'] #Eintrag wurde automatisch gelöscht
#   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'

Listenmanipulationswerkzeug


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)

Gleitkommaberechnung von Dezimalzahlen

Recommended Posts

Python-Standardbibliothek: zweite Hälfte (Python-Lernnotiz ⑨)
Python-Standardbibliothek: Erste Hälfte (Python-Lernnotiz ⑧)
Python-Klasse (Python-Lernnotiz ⑦)
Python-Modul (Python-Lernnotiz ④)
Python & Machine Learning Study Memo Introduction: Einführung in die Bibliothek
Behandlung von Python-Ausnahmen (Python-Lernnotiz ⑥)
Python-Steuerungssyntax, Funktionen (Python-Lernnotiz ②)
Eingabe / Ausgabe mit Python (Python-Lernnotiz ⑤)
<Für Anfänger> Python-Bibliothek <Für maschinelles Lernen>
Abschnittsplanung Lernnotiz ~ von Python ~
"Scraping & maschinelles Lernen mit Python" Lernnotiz
(Python) Deep Learning Library Chainer-Grundlagen Grundlagen
Python-Memo
Python-Memo
Python-Memo
Python-Memo
Python lernen
Python-Memo
Python-Memo
Python & Machine Learning Study Memo: Vorbereitung der Umgebung
[Lernnotiz] Grundlagen des Unterrichts mit Python
Struktur und Betrieb der Python-Daten (Python-Lernnotiz ③)
Python & Machine Learning Study Memo ③: Neuronales Netz
Python & maschinelles Lernen Lernnotiz Machine: Maschinelles Lernen durch Rückausbreitung
Python & Machine Learning Study Memo ⑥: Zahlenerkennung
Python 3.6 E-Mail-Bibliothek
LPIC201 Studiennotiz
[Python] Lernnotiz 1
Python ast Bibliothek
Python-Anfänger-Memo (9.2-10)
Django Lernnotiz
Python & Machine Learning Study Memo ⑤: Klassifikation von Ayame
Python-Anfänger-Memo (9.1)
Python-Lernausgabe
[Python] Standardeingabe
★ Memo ★ Python Iroha
Python-Lerntag 4
Vorhersage der Immobilienpreise (maschinelles Lernen: zweite Hälfte) ver1.1
[Python] EDA-Memo
Python Deep Learning
Python 3-Operator-Memo
Unerwartet unbekannt !? Python Standard Library Function Groupby
Python Library Hinweis
Python-Lernen (Ergänzung)
Hinweis zum Ausprobieren von Juniper JUNOS PyEz (Python-Bibliothek) 1 ~ PyEz Übersicht ~
Deep Learning × Python
[Memo] Maschinelles Lernen
[Mein Memo] Python
Python3-Metaklassen-Memo
[Python] Grundkarten-Memo
progate Python-Lernnotiz (von Zeit zu Zeit aktualisiert)
Python & Machine Learning Study Memo ⑦: Aktienkursprognose
Python-Anfänger-Memo (2)
Python-Lernnotizen
[Python] Numpy Memo
Python-Lernnotiz für maschinelles Lernen von Chainer aus Kapitel 2
Kann bei Wettkampfprofis eingesetzt werden! Python-Standardbibliothek
Konstruktionsnotiz für eine maschinelle Lernumgebung von Python
[Redash] Die Standardbibliothek kann nicht in der Python-Funktion verwendet werden