Python-Standardmodul, das in der Befehlszeile verwendet werden kann

Starten Sie das Python-Modul über die Befehlszeile

$ python --help
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
...
-m mod : run library module as a script (terminates option list)
...

-m mod : run library module as a script (terminates option list)

Wenn Sie "Python" mit der Option "-m" starten, wird das Modul in "$ PYTHONPATH" gesucht und ausgeführt. Wenn Sie sich nur für die inklusive Batterie einsetzen, können Sie eine Vielzahl von Funktionen nutzen, ohne Code schreiben zu müssen. Auch wenn Sie nicht an der Python-Sprache selbst interessiert sind, ist es hilfreich, sich diese bei der Arbeit mit der Shell zu merken. Es scheint jedoch, dass es viele Dinge gibt, die nicht gut dokumentiert sind, deshalb werde ich vorstellen, was ich weiß.

Einführung von Modulen, die verwendet werden können

Beide können mit dem Python2-System verwendet werden (das standardmäßig für OSX / Linux enthalten ist). Es müssen keine speziellen Pakete installiert werden.

json.tool

Empfängt JSON-Daten von Standardeingaben, Formaten und Anzeigen.

$ echo '{"spam": ["ham", "egg"]}' | python -m json.tool
{
    "spam": [
        "ham",
        "egg"
    ]
}

Sie können jq oder jsonlint nicht verwenden, ohne es zu installieren, aber python kann in vielen Umgebungen verwendet werden.

Der Schwachpunkt ist, dass der Einzug auf 4 festgelegt ist (andere sind normalerweise 2), daher ist es gut, zu "sed -e's / / / g" zu pfeifen.

SimpleHTTPServer

Veröffentlichen Sie im aktuellen Verzeichnis über HTTP.

$ python -m SimpleHTTPServer 8080
Serving HTTP on 0.0.0.0 port 8080 ...

Wenn Sie in diesem Status auf http: // localhost: 8080 zugreifen, wird die Dateiliste angezeigt.

SimpleHTTPServer.png

Es kann zum Debuggen von Webanwendungen und zum Überprüfen von HTML-Dateien verwendet werden. Ohne Argumente wird standardmäßig Port 8000 verwendet.

CGIHTTPServer

Fast das gleiche wie "SimpleHTTPServer", jedoch mit aktiviertem CGI.

$ python -m CGIHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...

Sehr nützlich für die Veröffentlichung kleiner CGI-Skripte im LAN.

smtpd

Richten Sie lokal einen SMTP-Proxyserver ein. Es kann in Kombination mit dem später beschriebenen "smtplib" verwendet werden.

$ sudo python -m smtpd -d -n localhost:25

smtplib

Senden Sie eine E-Mail an localhost. Sie werden in der Reihenfolge "Von", "Bis" und "Körper" aufgefordert. Schreiben Sie daher eine E-Mail von der Standardeingabe.

$ python -m smtplib

ftplib

Werden Sie ein FTP-Client.

$ python -m ftplib ftp://localhost

Es ist eine verschlechterte Kopie des Befehls "ftp", aber es ist möglich, dass es kein "ftp" und ein "Python" gibt.

telnetlib

Werden Sie Telnet-Client.

$ python -m telnetlib towel.blinkenlights.nl

Sie können die AA-Version der berühmten Star Wars Episode 4 sehen.

poplib

Werden Sie ein Pop3-Mail-Client.

$ python -m poplib localhost user password

htmllib

Werden Sie ein Textbrowser. Sie können nicht direkt auf die URL verweisen, daher müssen Sie sie vorab lokal herunterladen.

$ python -m htmllib index.html

Es ist kein großartiger Ersatz für "w3m" oder "lynx", z. B. wenn Inline-Javascript nicht interpretiert wird. Wenn Sie es zwingen, es zu verwenden, wird es eine Ablenkung zwischen dem Parsen von nicht gut formatiertem HTML mit htmllib oder dem Herausbringen von BeautifulSoup sein (wenn dieser Befehl fehlschlägt, ist es HTML, das vom Python-Standard nicht analysiert werden kann, also BeautifulSoup Sie können `verwenden, um zu bestimmen, dass es analysiert werden soll).

xmllib

XML analysieren.

$ python -m xmllib egg.xml
xml: encoding = ISO-8859-1 standalone = None
data: '\n'
...

Es scheint, dass es nicht alleine verwendet werden kann ... Es kann ein wenig verwendet werden, wenn es mit "awk" kombiniert wird. Es ist jedoch besser, ein Skript zu schreiben, als es zu tun.

filecmp

Nehmen Sie den Unterschied zwischen den beiden Verzeichnissen.

python -m filecmp dir1/ dir2/
diff dir1 dir2
Only in dir1 : ['foo.txt']
Only in dir2 : ['bar.txt']
Differing files : ['baz.txt']

Durchlaufen Sie Verzeichnisse rekursiv mit der Option "-r" (Standard ist nur eine Ebene). Sie können den Dateinamen sehen und sehen, ob er geändert wurde. Beachten Sie jedoch, dass der Inhalt nicht angezeigt wird.

gzip

GZIP-Komprimierungs- / Dekomprimierungswerkzeug.

$ python -m gzip baz.tar   # compress
$ python -m gzip -d baz.tar.gz # decompress

Etwas weniger funktionell als das unten beschriebene "Zipfile". Ich helfe nicht einmal. Sie dürfen es nicht verwenden, da Sie "tar" nicht erweitern können.

zipfile

ZIP-Komprimierungs- / Dekomprimierungswerkzeug.

$ python -m zipfile -c foo.zip bar.txt baz.png

Liste mit der Option -l, teste mit der Option -t, erweitere mit der Option -e und komprimiere mit der Option -c.

Sie können die meisten Operationen mit dem Befehl "zip" ausführen, aber es ist subtil, wenn Sie die Möglichkeit haben, ihn zu verwenden (in einer Umgebung, in der dieses Modul verwendet werden kann, können Sie wahrscheinlich auch den Befehl "zip" verwenden).

mimetype

Nimmt einen Dateinamen als Argument und gibt den MIMETYP dieser Datei zurück.

$ python -m mimetype ham.png
type: image/png encoding: None

Da es anhand des Dateinamens beurteilt wird, funktioniert es auch dann, wenn die Datei selbst nicht vorhanden ist. Entspricht es fast der Option --mimetype des Befehls file?

base64

Base64 codiert / decodiert die Standardeingabe und zeigt sie auf der Standardausgabe an.

$ echo 'python' | python -m base64
cHl0aG9uCg==
$ echo 'cHl0aG9uCg==' | python -m base64 -d
python

Fast gleichbedeutend mit dem Befehl openssl base64. Es scheint eine anständige Umgebung mit "Python" ohne "openssl" zu geben.

uu

Codieren / decodieren Sie die Standardeingabe mit Uuencode und zeigen Sie sie auf der Standardausgabe an.

$ python -m uu < baz.png

Im Vergleich zu base64 gibt es nur wenige Möglichkeiten, es zu verwenden.

mimify

Codieren / decodieren Sie die Standardeingabe in ein Format, das per E-Mail verarbeitet werden kann, und zeigen Sie sie in der Standardausgabe an. Ähnlich wie base64, jedoch mit einem Mail-Header.

$ python -m mimify -e foo.jpg  # encode
$ python -m mimify -d bar.eml  # decode

Es wird empfohlen, in eine Datei umzuleiten, da die Steuerzeichen das Terminal beschädigen können.

quopri

Codieren / decodieren Sie die Standardeingabe mit Quoted-printable und zeigen Sie sie in der Standardausgabe an.

$ python -m quopri < quux.png

Base64 ist der De-facto-Standard für diese binären <=> ASCII-Konvertierungscodecs, und es gibt nur wenige Möglichkeiten, sie zu verwenden.

timeit

Messen Sie die Ausführungszeit eines Python-Codes. Es scheint genauer zu sein als der POSIX-Befehl time. Es ist ziemlich klug, beispielsweise die Anzahl der Schleifen automatisch zu bestimmen, damit der Fehler klein ist.

$ python -m timeit 'pow(2, 10000)'
10000 loops, best of 3: 25 usec per loop

Es gibt viele Möglichkeiten. Siehe python -m timeit -h für Details.

profile

Messen Sie das Profil eines Python-Skripts.

$ python -m profile ham.py
          473 function calls in 0.009 seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    0.000    0.000 :0(range)
        1    0.006    0.006    0.006    0.006 :0(setprofile)
...

Gut, um Engpässe beim Optimieren von Skripten zu finden.

modulefinder

Suchen Sie rekursiv das Modul, das Sie importieren.

$ python -m modulefinder foo.py

  Name          File
  ----          ----
m __main__      foo.py
m array
m re            /usr/lib/python2.7/re.py

Sie können es verwenden, wenn Sie von einer Abhängigkeit abhängig sind ... nicht wahr?

unittest

Testläufer für Pythons Standard-Testbibliothek "unittest". Da dies ausführlich in Referenz beschrieben ist, wird die Erklärung weggelassen.

Es ist gut, sich an die Redewendung von "Python -m unittest entdecken -v" zu erinnern.

doctest

Dies ist auch ein Testläufer für Pythons Standard-Testbibliothek "doctest". Siehe Referenz.

Immerhin ist es in Ordnung, wenn Sie sich nur an python -m doctest -v foo.py erinnern.

Persönlich denke ich, dass es ein sehr Python-ähnliches Modul ist.

site

Zeigen Sie Informationen an, z. B. wo das Modul geladen werden soll, und sys.path.

$ python -m site
sys.path = [
    '/usr/lib/python2.7',
    '/usr/lib/python2.7/plat-x86_64-linux-gnu',
...

Da Sie die mit Python verbundenen Umgebungsvariablen auflisten können, scheint dies nützlich zu sein.

platform

Betriebssysteminformationen anzeigen.

$ python -m platform
Linux-3.13.0-48-generic-x86_64-with-Ubuntu-14.04-trusty

Die Ausgabeinformationen sind wie das Hinzufügen von "uname -a" und "cat / etc / issue" (für Linux). Es ist einfach zu bedienen, da es durch einen Bindestrich getrennt wird.

shlex

Werden Sie ein Shell Phrase Analyzer. Schneiden Sie Token mithilfe der Bourne-Shell-Syntax aus.

$ echo 'spam ham egg' | python -m shlex
Token: 'spam'
Token: 'ham'
Token: 'egg'

Der Zweck ist unbekannt, aber es scheint keinen ähnlichen Befehl zu geben.

locale

Zeigen Sie die Gebietsschemaeinstellungen an.

$ python -m locale
Locale aliasing:

Locale defaults as determined by getdefaultlocale()
-----------------------------------------------------------------
Language: ja_JP
Encoding: UTF-8

Locale settings on startup:
-----------------------------------------------------------------
LC_NUMERIC ...
   Language:  (undefined)
   Encoding:  (undefined)
...

Die Anzeige ist leicht zu lesen (redundant), was fast dem Befehl "locale" entspricht.

webbrowser

Ein Modul, das einfach einen Browser über die Befehlszeile öffnet.

$ python -m webbrowser -n http://qiita.com

Öffnen Sie ein neues Fenster mit der Option "-n" und eine neue Registerkarte mit der Option "-t". Es ist nüchtern, aber es gibt nicht viele ähnliche Befehle. Daher kann es nützlich sein, wenn Sie einen Messenger haben. Der zu öffnende Browser wird automatisch wie vom System angegeben ausgewählt und kann nicht geändert werden.

tabnanny

Überprüfen Sie den Einzug des Python-Skripts. Wenn Unklarheiten bestehen, korrigieren Sie diese und schreiben Sie sie neu.

$ python -m tabnanny my_script.py

Das Verzeichnis kann auch als Argument herangezogen werden. Seien Sie jedoch vorsichtig, da es die darin enthaltenen Dateien rekursiv überschreibt.

compileall

Kompilieren Sie das Python-Skript.

python -m compileall my_project/

Durchsuchen Sie das Verzeichnis rekursiv und kompilieren Sie die .py-Datei in .pyc. Da es einen Entschlüsseler gibt, kann er nicht zur Verschleierung verwendet werden. Normalerweise ist die Leistungsverbesserung nicht so groß, daher habe ich nicht viele Chancen, sie zu nutzen. Klicken Sie hier für Referenz.

dis

Python Reverse Assembler. Analysieren Sie den Code im Skript * .py.

$ python -m dis /usr/lib/python2.7/abc.py
  4           0 LOAD_CONST               0 ('Abstract Base Classes (ABCs) according to PEP 3119.')
              3 STORE_NAME               0 (__doc__)

  6           6 LOAD_CONST               1 (-1)
              9 LOAD_CONST               2 (None)
             12 IMPORT_NAME              1 (types)
             15 STORE_NAME               1 (types)

  8          18 LOAD_CONST               1 (-1)
             21 LOAD_CONST               3 (('WeakSet',))

Eine Liste der Anweisungen finden Sie unter Referenz.

Bonus

code

Öffnen Sie den Dolmetscher. Entspricht dem Befehl python ohne Argumente.

$ python -m code
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>

trace

Trace Python Funktionsaufrufe.

Die Verwendung ist in Referenz beschrieben, aber ehrlich gesagt halte ich "pdb" für ausreichend.

pdb

Starten Sie Pythons interaktiven Debugger "pdb". Weitere Informationen finden Sie unter Referenz.

Es wird normalerweise als "pdb" -Befehl bereitgestellt, sodass es nicht als Modul aufgerufen werden muss.

pydoc

Dies ist auch der bekannte Befehl "pydoc", kann aber auch als Modul gestartet werden.

turtle

Demo des Standard-GUI-Moduls Tkinter. Obwohl es standardmäßig angeschlossen ist, ist es je nach Umgebung wie OSX nicht enthalten. Seien Sie also vorsichtig.

$ python -m turtle

turtle.png

encodings.rot_13

Verschlüsseln Sie die Standardeingabe mit rot13 und zeigen Sie sie in der Standardausgabe an.

$ echo 'hamegg' | python -m encodings.rot_13
unzrtt

Ursprünglich ein Story-Modul. Ich benutze es normalerweise nicht, aber es ist interessant, dass rot13 in der Standardbibliothek enthalten ist.

antigravity

$ python -m antigravity

Neta-Modul Teil 2. Ich werde es nicht erklären.

Recommended Posts

Python-Standardmodul, das in der Befehlszeile verwendet werden kann
Korrespondenznotiz, wenn die Richtungstaste nicht in der Python-Befehlszeile verwendet werden kann
Zusammenfassung der Standardeingabe von Python, die in Competition Pro verwendet werden kann
Das Problem, dass der Befehl ifconfig nicht verwendet werden kann
Python Hinweis: Wenn der Befehl pip nicht verwendet werden kann
Kann bei Wettkampfprofis eingesetzt werden! Python-Standardbibliothek
[Django] Über Benutzer, die für Vorlagen verwendet werden können
Goroutine (parallele Steuerung), die im Feld eingesetzt werden kann
Goroutine, die im Feld verwendet werden kann (errgroup.Group Edition)
Skripte, die bei der Verwendung von Bottle in Python verwendet werden können
Installieren Sie Mecab und CaboCha auf ubuntu16.04LTS, damit es aus der Python3-Serie verwendet werden kann
Welches Oktalliteral verwendet werden kann, hängt von der Programmiersprache ab
Ein Timer (Ticker), der im Feld verwendet werden kann (kann überall verwendet werden)
Erhalten Sie weiterhin RSS in der Befehlszeile
Verstehen Sie die Wahrscheinlichkeiten und Statistiken, die für das Fortschrittsmanagement mit einem Python-Programm verwendet werden können
[Python] Ich habe versucht, mit argparse ein einfaches Programm zu erstellen, das in der Befehlszeile funktioniert
Sie suchen in der Befehlszeile nach commandlinefu
Über die Angelegenheit, dass das re.compiled-Objekt für das re.match-Muster verwendet werden kann
Ich habe eine generische Python-Projektvorlage erstellt
Akustisches Signalverarbeitungsmodul, das mit Python-Sounddevice ASIO [Anwendung] verwendet werden kann
Python-Sound Gerät ASIO akustisches Signalverarbeitungsmodul [Basic]
Die Option --security kann unter CentOS Linux nicht mit dem Befehl dnf verwendet werden
Dateitypen, die mit Go verwendet werden können
Funktionen, die in der for-Anweisung verwendet werden können
Zeigen Sie den QR-Code schnell in der Befehlszeile an
Häufig verwendete (persönliche) Notizen für den Befehl tar
Arduino-Entwicklung über die Kommandozeile: vim + platformio
Syntaxhervorhebung in der Befehlszeile mithilfe von Pylements
Meine Gedanken zur Python2.6-Befehlszeilen-App-Vorlage
Führen Sie Route53 in der Befehlszeile mit AWS-CLI aus.
Denken Sie an selektive Schnittstellen in der Befehlszeile
Linux-Befehl (Basic Edition), der ab heute verwendet werden kann, wenn Sie wissen
Kratzmodul "Gaspacho", das einfacher zu verwenden ist als Beautiful Soup
[Python3] Code, der verwendet werden kann, wenn Sie die Erweiterung eines Bildes sofort ändern möchten
Einführung des Befehls "Glances", eines auf einen Blick verständlichen Überwachungstools, auf den Mac
Grundlegende Algorithmen, die bei Wettkampfprofis eingesetzt werden können
Um Japanisch mit Python in der Docker-Umgebung verwenden zu können
ANTs Bildregistrierung, die in 5 Minuten verwendet werden kann
So filtern Sie die externen Schlüssel, die auf dem Django-Verwaltungsbildschirm ausgewählt werden können
[Python] Einführung in das WEB-Scraping | Zusammenfassung der Methoden, die mit dem Webdriver verwendet werden können
Übergeben von Argumenten beim Aufrufen von Python-Skripten über Blender in der Befehlszeile
Qiita kann jetzt auf der Konsole (Shell) angezeigt werden.
Deep Learning Kurs, der vor Ort zerquetscht werden kann
Anweisungen zur Verwendung der AWS-Befehlszeilenschnittstelle (Python / awscli) unter Mac OS X.
Listen Sie die Klassen auf, auf die ObjCClass verweisen kann
[Redash] Die Standardbibliothek kann nicht in der Python-Funktion verwendet werden
Einfache Statistiken, mit denen die Auswirkungen von Maßnahmen auf EG-Standorte und Codes analysiert werden können, die in Jupyter-Notebooks verwendet werden können
[Django] Feldnamen, die für das Benutzermodell, die Benutzerregistrierung und die Anmeldemethoden verwendet werden können
[Python3] Code, der verwendet werden kann, wenn Sie die Größe von Bildern Ordner für Ordner ändern möchten
[Python] Ein Programm, um die Anzahl der Äpfel und Orangen zu ermitteln, die geerntet werden können
So legen Sie Variablen fest, die in der gesamten Django-App verwendet werden können ~ Praktisch für Vorlagen usw. ~
Warum kann ich das Modul durch Importieren mit Python verwenden?
Suchen Sie unter Linux über die Befehlszeile nach großen Dateien
[Python] Argumente mit variabler Länge können beim Entpacken iterierbarer Elemente verwendet werden
SSD 1306 OLED kann mit Raspeye + Python verwendet werden (Hinweis)
Ich habe die Vorbehandlung untersucht, die mit PyCaret durchgeführt werden kann
Über das Python-Modul venv
Führen Sie den Unix-Befehl auf Python aus