$ 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ß.
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.
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.
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
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