Module standard Python utilisable en ligne de commande

Lancez le module Python depuis la ligne de commande

$ 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)

Si vous démarrez python avec l'option -m, il recherchera le module dans $ PYTHONPATH et l'exécutera. En préconisant simplement la batterie incluse, vous pouvez utiliser un large éventail de fonctions sans écrire de code. Même si le langage Python lui-même ne vous intéresse pas, il est utile de s'en souvenir lorsque vous travaillez avec le shell. Cependant, il semble qu'il y ait beaucoup de choses qui ne sont pas bien documentées, alors je vais vous présenter ce que je sais.

Introduction de modules utilisables

Les deux peuvent être utilisés avec le système python2 (qui est inclus en standard pour OSX / Linux). Pas besoin d'installer des packages spéciaux.

json.tool

Reçoit les données JSON des entrées, formats et affichages standard.

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

Vous ne pouvez pas utiliser jq ou jsonlint sans l'installer, mais python peut être utilisé dans de nombreux environnements.

Le point faible est que le retrait est fixé à 4 (les autres sont généralement 2), il est donc bon de diriger vers sed -e's / / / g'.

SimpleHTTPServer

Publiez sous le répertoire actuel via HTTP.

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

Si vous accédez à http: // localhost: 8080 dans cet état, vous pouvez voir la liste des fichiers.

SimpleHTTPServer.png

Il peut être utilisé pour déboguer des applications Web et vérifier des fichiers HTML. Sans argument, le port 8000 est utilisé par défaut.

CGIHTTPServer

Presque le même que SimpleHTTPServer, mais avec CGI activé.

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

Très utile pour publier de petits scripts CGI dans le LAN.

smtpd

Configurez un serveur proxy SMTP localement. Il peut être utilisé en combinaison avec «smtplib» décrit plus loin.

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

smtplib

Envoyez un e-mail à localhost. Vous serez invité dans l'ordre de «De», «À» et «Corps», alors écrivez un e-mail à partir de l'entrée standard.

$ python -m smtplib

ftplib

Devenez un client ftp.

$ python -m ftplib ftp://localhost

C'est une copie dégradée de la commande ftp, mais il est possible qu'il n'y ait pas de ftp et qu'il y ait un python.

telnetlib

Devenez client telnet.

$ python -m telnetlib towel.blinkenlights.nl

Vous pouvez regarder la version AA du célèbre épisode 4 de Star Wars.

poplib

Devenez un client de messagerie POP3.

$ python -m poplib localhost user password

htmllib

Devenez un navigateur de texte. Vous ne pouvez pas vous référer directement à l'URL, vous devez donc la télécharger localement à l'avance.

$ python -m htmllib index.html

Ce n'est pas un excellent substitut à «w3m» ou «lynx», par exemple ne pas interpréter le javascript en ligne. Si vous êtes obligé de réfléchir à la façon de l'utiliser, ce sera une diversion entre l'analyse du HTML mal formaté avec htmllib ou la sortie de BeautifulSoup (si cette commande échoue, c'est du HTML qui ne peut pas être analysé par le standard Python, doncBeautifulSoup Vous pouvez utiliserpour déterminer qu'il doit être analysé).

xmllib

Analyser XML.

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

Il ne semble pas être utilisable par lui-même ... Il peut être un peu utilisé s'il est combiné avec ʻawk`. Cependant, il vaut mieux écrire un script que de le faire.

filecmp

Faites la différence entre les deux répertoires.

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

Parcourez les répertoires de manière récursive avec l'option -r (la valeur par défaut n'est qu'un niveau). Vous pouvez voir le nom du fichier et s'il a été modifié, mais notez que le contenu n'est pas affiché.

gzip

Outil de compression / décompression GZIP.

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

Légèrement moins fonctionnel que le "zipfile" décrit ci-dessous. Je n'aide même pas. Vous ne pouvez pas l'utiliser car vous ne pouvez pas développer tar.

zipfile

Outil de compression / décompression ZIP.

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

Listez avec l'option -l, testez avec l'option -t, développez avec l'option -e et compressez avec l'option -c.

Vous pouvez effectuer la plupart des opérations avec la commande zip, mais elle est subtile si vous avez une chance de l'utiliser (dans un environnement où ce module peut être utilisé, la commande zip est susceptible d'être utilisée également).

mimetype

Prend un nom de fichier comme argument et renvoie le MIMETYPE de ce fichier.

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

Puisqu'il est jugé d'après le nom du fichier, il fonctionne même si le fichier lui-même n'existe pas. Est-ce presque équivalent à l'option --mimetype de la commande file?

base64

Base64 encoder / décoder l'entrée standard et l'afficher sur la sortie standard.

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

Presque équivalent à la commande ʻopenssl base64. Il semble y avoir un environnement décent avec python sans ʻopenssl.

uu

Encodez / décodez l'entrée standard avec uuencode et affichez-la sur la sortie standard.

$ python -m uu < baz.png

Il y a peu d'opportunités de l'utiliser par rapport à base64.

mimify

Encodez / décodez l'entrée standard dans un format qui peut être géré par e-mail et affichez-la sur la sortie standard. Similaire à base64, mais avec un en-tête de courrier.

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

Il est recommandé de rediriger vers un fichier car les caractères de contrôle peuvent casser le terminal.

quopri

Encodez / décodez l'entrée standard avec Quoted-printable et affichez-la sur la sortie standard.

$ python -m quopri < quux.png

Base64 est le standard de facto pour ces codecs de conversion binaires <=> ascii, et il y a peu de possibilités de les utiliser.

timeit

Mesurez le temps d'exécution d'un morceau de code Python. Cela semble être plus précis que la commande POSIX time. C'est assez intelligent, comme déterminer automatiquement le nombre de boucles afin que l'erreur soit petite.

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

Il existe de nombreuses options. Voir python -m timeit -h pour plus de détails.

profile

Mesurez le profil d'un script Python.

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

Idéal pour trouver les goulots d'étranglement lors du réglage des scripts.

modulefinder

Trouvez récursivement le module que vous importez.

$ python -m modulefinder foo.py

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

Vous pouvez l'utiliser lorsque vous êtes accro à une dépendance ... N'est-ce pas?

unittest

Test runner pour la bibliothèque de test standard de Python ʻunittest`. Comme il est décrit en détail dans Référence, l'explication est omise.

Il est bon de se souvenir de l'idiome de python -m unittest discover -v.

doctest

C'est aussi un testeur pour la bibliothèque de tests standard de Python doctest. Voir Référence.

Après tout, ce n'est pas grave si vous vous souvenez seulement de python -m doctest -v foo.py.

Personnellement, je pense que c'est un module très semblable à Python.

site

Affichez des informations telles que l'emplacement de chargement du module et sys.path.

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

Puisque vous pouvez lister les variables d'environnement liées à Python, cela semble être utile.

platform

Afficher les informations du système d'exploitation.

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

Les informations de sortie sont comme ajouter ʻuname -aet (pour Linux)cat / etc / issue`. Il est facile à utiliser car il est normalisé par un séparateur de tirets.

shlex

Devenez un analyseur de phrases shell. Découpez les jetons en utilisant la syntaxe de style Bourne shell.

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

Le but est inconnu, mais il ne semble pas y avoir de commande similaire.

locale

Affichez les paramètres régionaux.

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

L'affichage est facile à lire (redondant), ce qui est presque le même que la commande locale.

webbrowser

Un module qui ouvre simplement un navigateur à partir de la ligne de commande.

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

Ouvrez une nouvelle fenêtre avec l'option -n et un nouvel onglet avec l'option -t. C'est sobre, mais il n'y a pas beaucoup de commandes similaires, donc cela pourrait être utile si vous avez un messager. Le navigateur à ouvrir est automatiquement sélectionné comme spécifié par le système et ne peut pas être modifié.

tabnanny

Vérifiez l'indentation du script Python, et s'il y a une ambiguïté, corrigez-la et réécrivez-la.

$ python -m tabnanny my_script.py

Le répertoire peut également être pris comme argument, mais attention car il écrasera récursivement les fichiers qu'il contient.

compileall

Compilez le script Python.

python -m compileall my_project/

Recherchez récursivement le répertoire et compilez le fichier .py dans .pyc. Puisqu'il existe un décrypteur, il ne peut pas être utilisé pour l'obscurcissement, Habituellement, l'amélioration des performances n'est pas si grande, donc je n'ai pas beaucoup de chance de l'utiliser. Cliquez ici pour Référence.

dis

Assembleur inverse Python. Analysez le code dans le script * .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',))

Voir Référence pour une liste d'instructions.

prime

code

Ouvrez l'interprète. Équivaut à la commande python sans argument.

$ 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

Tracez les appels de fonction Python.

L'utilisation est décrite dans Reference, mais honnêtement, je pense que pdb est suffisant.

pdb

Démarrez le débogueur interactif de Python pdb. Voir Référence pour plus de détails.

Il est généralement fourni sous forme de commande pdb, il n'est donc pas nécessaire de l'appeler en tant que module.

pydoc

C'est aussi la commande familière pydoc, mais elle peut aussi être lancée en tant que module.

turtle

Démo du module GUI standard Tkinter. Bien qu'il soit attaché en standard, il n'est pas inclus en fonction de l'environnement tel que OSX, donc soyez prudent.

$ python -m turtle

turtle.png

encodings.rot_13

Cryptez l'entrée standard avec rot13 et affichez-la sur la sortie standard.

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

À l'origine un module d'histoire. Je ne l'utilise généralement pas, mais il est intéressant de noter que rot13 est inclus dans la bibliothèque standard.

antigravity

$ python -m antigravity

Module Neta partie 2. Je ne vais pas l'expliquer.

Recommended Posts

Module standard Python utilisable en ligne de commande
Mémo de correspondance lorsque la touche de direction ne peut pas être utilisée dans la ligne de commande python
Résumé de l'entrée standard de Python pouvant être utilisée dans Competition Pro
Le problème que la commande ifconfig ne peut pas être utilisée
Remarque Python: lorsque la commande pip ne peut pas être utilisée
Peut être utilisé chez les pros de la compétition! Bibliothèque standard Python
[Django] À propos des utilisateurs pouvant être utilisés sur un modèle
Goroutine (contrôle parallèle) utilisable sur le terrain
Goroutine utilisable sur le terrain (édition errgroup.Group)
Scripts pouvant être utilisés lors de l'utilisation de Bottle en Python
Installez Mecab et CaboCha sur ubuntu16.04LTS afin qu'il puisse être utilisé à partir de la série python3
Le littéral octal peut être utilisé dépend du langage de programmation
Un minuteur (ticker) qui peut être utilisé sur le terrain (peut être utilisé n'importe où)
Continuez à recevoir RSS sur la ligne de commande
Comprendre les probabilités et les statistiques qui peuvent être utilisées pour la gestion des progrès avec un programme python
[Python] J'ai essayé de créer un programme simple qui fonctionne sur la ligne de commande en utilisant argparse
Vous recherchez commandlinefu sur la ligne de commande
À propos du fait que l'objet recompilé peut être utilisé pour le modèle re.match
J'ai créé un modèle de projet Python générique
Module de traitement du signal acoustique qui peut être utilisé avec Python-Sounddevice ASIO [Application]
Optimisation mathématique pour un travail gratuit avec Python + PuLP
Python-Sound device Module de traitement du signal acoustique ASIO [Basic]
L'option --security ne peut pas être utilisée avec la commande dnf sous CentOS Linux
Types de fichiers pouvant être utilisés avec Go
Fonctions pouvant être utilisées dans l'instruction for
Afficher rapidement le code QR sur la ligne de commande
Notes fréquemment utilisées (personnellement) pour la commande tar
Développement Arduino en ligne de commande: vim + platformio
Mise en évidence de la syntaxe sur la ligne de commande à l'aide de Pygments
Mes réflexions sur le modèle d'application de ligne de commande python2.6
Exécutez Route53 sur la ligne de commande à l'aide de l'AWS-CLI.
Pensez aux interfaces sélectives sur la ligne de commande
Commande Linux (édition de base) utilisable à partir d'aujourd'hui si vous connaissez
Module de grattage "Gaspacho" qui peut être utilisé plus facilement que Beautiful Soup
[Python3] Code qui peut être utilisé lorsque vous souhaitez modifier l'extension d'une image à la fois
Présentation de la commande "Glances", un outil de surveillance compréhensible en un coup d'œil, sur Mac
Algorithmes de base utilisables par les pros de la compétition
Pour pouvoir utiliser le japonais avec Python dans l'environnement Docker
Enregistrement d'image ANT qui peut être utilisé en 5 minutes
Comment filtrer les clés externes qui peuvent être sélectionnées sur l'écran d'administration de Django
[Python] Introduction au scraping WEB | Résumé des méthodes pouvant être utilisées avec webdriver
Comment passer des arguments lors de l'appel d'un script python depuis Blender sur la ligne de commande
Qiita peut maintenant être visualisé sur la console (shell)
Cours de Deep Learning pouvant être écrasé sur place
Instructions d'utilisation de l'interface de ligne de commande AWS (Python / awscli) sous Mac OS X
Lister les classes qui peuvent être référencées par ObjCClass
[Redash] La bibliothèque standard ne peut pas être utilisée dans la fonction python
Statistiques simples qui peuvent être utilisées pour analyser l'effet des mesures sur les sites EC et les codes qui peuvent être utilisés dans le notebook jupyter
[Django] Noms de champs pouvant être utilisés pour le modèle utilisateur, l'enregistrement des utilisateurs et les méthodes de connexion
[Python3] Code qui peut être utilisé lorsque vous souhaitez redimensionner des images dossier par dossier
[Python] Un programme pour trouver le nombre de pommes et d'oranges qui peuvent être récoltées
Comment définir des variables pouvant être utilisées dans toute l'application Django ~ Utile pour les modèles, etc. ~
Pourquoi puis-je utiliser le module en important avec python?
Rechercher des fichiers volumineux sous Linux à partir de la ligne de commande
[Python] Les arguments de longueur variable peuvent être utilisés lors de la décompression des éléments itérables
SSD 1306 OLED peut être utilisé avec Raspeye + python (Remarque)
J'ai étudié le prétraitement qui peut être fait avec PyCaret
À propos du module Python venv
Exécutez la commande unix sur python