$ 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.
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.
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 utiliser
pour 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.
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
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