Maison > développement back-end > Tutoriel Python > Introduction de base au module Python Sys

Introduction de base au module Python Sys

爱喝马黛茶的安东尼
Libérer: 2019-06-14 14:47:03
original
7925 Les gens l'ont consulté

1 : sys est un module intégré de python

Utilisez l'instruction import pour accéder au module sys.

Recommandations associées : "vidéo python"

Introduction de base au module Python Sys

Lorsque l'import sys est exécuté, python est répertorié dans le répertoire du sys. variable de chemin Recherchez le fichier du module sys. Exécutez ensuite les instructions dans le bloc principal de ce module pour l'initialiser, puis vous pourrez utiliser le module.

2 : Fonctions communes du module sys

Vous pouvez utiliser la méthode dir() pour visualiser les méthodes disponibles dans le module. Les résultats sont les suivants, je. Je n'en ai pas utilisé beaucoup, donc je me contente de présenter quelques méthodes que j'ai utilisées

$ python
Python 2.7.6 (default, Oct 26 2016, 20:30:19) 
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> dir(sys)
['__displayhook__', '__doc__', '__excepthook__', '__name__', '__package__', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_getframe', '_mercurial', '_multiarch', 'api_version', 'argv', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dont_write_bytecode', 'exc_clear', 'exc_info', 'exc_type', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'gettrace', 'hexversion', 'long_info', 'maxint', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', 'ps2', 'py3kwarning', 'pydebug', 'setcheckinterval', 'setdlopenflags', 'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout', 'subversion', 'version', 'version_info', 'warnoptions']
Copier après la connexion

(1) sys.argv implémente la transmission de paramètres de l'extérieur du programme au programme

. La variable sys.argv est une chaîne contenant la liste des paramètres de ligne de commande, utilisez la ligne de commande pour transmettre les paramètres au programme. Parmi eux, le nom du script est toujours le premier paramètre de la liste sys.argv.

(2) sys.path contient une liste de noms de répertoires pour les modules d'entrée.

Obtenir l'ensemble de chaînes du chemin de recherche du module spécifié Vous pouvez placer le module écrit sous un certain chemin et vous pouvez le trouver correctement lors de l'importation dans le programme. Lors de l'importation de nom_module, module.name est recherché en fonction du chemin de sys.path. Vous pouvez également personnaliser le chemin du module.

sys.path.append("Chemin du module personnalisé")

(3) sys.exit([arg]) Sortie au milieu du programme, arg=0 signifie sortie normale

Généralement, l'interpréteur se termine automatiquement lorsque l'exécution atteint la fin du programme principal. Cependant, si vous devez quitter le programme à mi-chemin, vous pouvez appeler la fonction sys.exit avec un paramètre entier facultatif renvoyé à l'appelant. programme, indiquant que vous pouvez L'appel à sys.exit est capturé dans le programme principal. (0 signifie une sortie normale, les autres sont des exceptions) Bien entendu, vous pouvez également utiliser des paramètres de chaîne pour indiquer des messages d'erreur infructueux.

(4) sys.modules

sys.modules est un dictionnaire global, qui est chargé en mémoire après le démarrage de python. Chaque fois qu'un programmeur importe un nouveau module, sys.modules enregistrera automatiquement le module. Lorsque le module est importé pour la deuxième fois, Python le recherchera directement dans le dictionnaire, accélérant ainsi le programme. Il contient toutes les méthodes du dictionnaire

(5) sys.getdefaultencoding() / sys.setdefaultencoding() / sys.getfilesystemencoding()

sys.getdefaultencoding()

Obtenez l'encodage actuel du système, qui est généralement ascii par défaut.

sys.setdefaultencoding()

Définissez l'encodage par défaut du système Vous ne verrez pas cette méthode lors de l'exécution de dir (sys). Si l'exécution échoue dans l'interpréteur, vous pouvez exécuter reload (sys). ) d'abord, après avoir exécuté setdefaultencoding('utf8'), le codage par défaut du système est défini sur utf8. (Voir définition de l'encodage par défaut du système)

sys.getfilesystemencoding()

Obtenir l'encodage utilisé par le système de fichiers Il renvoie 'mbcs' sous Windows et 'utf-8' sous mac<. 🎜>

(6) Les variables sys.stdin, sys.stdout, sys.stderr

stdin, stdout et stderr contiennent des objets de flux correspondant aux flux d'E/S standard si vous avez besoin d'un meilleur contrôle sur le. la sortie et l'impression ne répondent pas à vos besoins, c'est ce dont vous avez besoin. Vous pouvez également les remplacer, puis rediriger la sortie et l'entrée vers d'autres périphériques (périphérique), ou les gérer de manière non standard

.

(7) sys.platform

Obtenez la plate-forme système actuelle telle que : win32, Linux, etc.

3 : Exemple

(1) sys.argv sys.path

$ cat sys-test.py
 #!/usr/bin/python
import sys
print &#39;The command line arguments are:&#39;
for i in sys.argv:
    print i
print &#39;\n\nThe PYTHONPATH is&#39;, sys.path, &#39;\n&#39;
Copier après la connexion

Exécuter le résultat :

$ python sys-test.py my name is ubuntu 
The command line arguments are:
sys-test.py
my
name
is
ubuntu
The PYTHONPATH is [&#39;/work/python-practice&#39;, &#39;/usr/lib/python2.7&#39;, &#39;/usr/lib/python2.7/plat-x86_64-linux-gnu&#39;, &#39;/usr/lib/python2.7/lib-tk&#39;, &#39;/usr/lib/python2.7/lib-old&#39;, &#39;/usr/lib/python2.7/lib-dynload&#39;, &#39;/usr/local/lib/python2.7/dist-packages&#39;, &#39;/usr/lib/python2.7/dist-packages&#39;, &#39;/usr/lib/python2.7/dist-packages/PILcompat&#39;, &#39;/usr/lib/python2.7/dist-packages/gtk-2.0&#39;, &#39;/usr/lib/pymodules/python2.7&#39;, &#39;/usr/lib/python2.7/dist-packages/ubuntu-sso-client&#39;]
Copier après la connexion

(2) sys.exit

import sys
def exitfunc(value):
    print (value)
    sys.exit(0)
print("hello")
try:
    sys.exit(90)
except SystemExit as value:
    exitfunc(value)   
print("come?")
Copier après la connexion

Run result:

hello
90
Copier après la connexion

Le programme imprime d'abord bonjour, puis exécute exit(90), lève une exception et passe 90 aux valeurs est exécuté dans le passé. fonction et imprime 90 Le programme se termine. Le "viens?" suivant ne sera pas imprimé car il est déjà terminé. À ce stade, si vous supprimez sys.exit(0) dans la fonction exitfunc, le programme continuera à s'exécuter jusqu'à ce qu'il affiche "viens?".

(3) sys.modules


sys.modules.keys() renvoie une liste de tous les modules importés

keys est le nom du module

valeurs est le module

chemin de retour des modules

import sys
print(sys.modules.keys())
print("**************************************************************************")
print(sys.modules.values())
print("**************************************************************************")
print(sys.modules["os"])
Copier après la connexion

Résultat d'exécution :

[&#39;copy_reg&#39;, &#39;sre_compile&#39;, &#39;_sre&#39;, &#39;encodings&#39;, &#39;site&#39;, &#39;__builtin__&#39;, &#39;sysconfig&#39;, &#39;__main__&#39;, &#39;encodings.encodings&#39;, &#39;abc&#39;, &#39;posixpath&#39;, &#39;_weakrefset&#39;, &#39;errno&#39;, &#39;encodings.codecs&#39;, &#39;sre_constants&#39;, &#39;re&#39;, &#39;_abcoll&#39;, &#39;types&#39;, &#39;_codecs&#39;, &#39;encodings.__builtin__&#39;, &#39;_warnings&#39;, &#39;genericpath&#39;, &#39;stat&#39;, &#39;zipimport&#39;, &#39;_sysconfigdata&#39;, &#39;warnings&#39;, &#39;UserDict&#39;, &#39;encodings.ascii&#39;, &#39;sys&#39;, &#39;codecs&#39;, &#39;_sysconfigdata_nd&#39;, &#39;os.path&#39;, &#39;sitecustomize&#39;, &#39;signal&#39;, &#39;traceback&#39;, &#39;linecache&#39;, &#39;posix&#39;, &#39;encodings.aliases&#39;, &#39;exceptions&#39;, &#39;sre_parse&#39;, &#39;os&#39;, &#39;_weakref&#39;]
*******************************************************************************
[<module &#39;copy_reg&#39; from &#39;/usr/lib/python2.7/copy_reg.pyc&#39;>, <module &#39;sre_compile&#39; from &#39;/usr/lib/python2.7/sre_compile.pyc&#39;>, <module &#39;_sre&#39; (built-in)>, <module &#39;encodings&#39; from &#39;/usr/lib/python2.7/encodings/__init__.pyc&#39;>, <module &#39;site&#39; from &#39;/usr/lib/python2.7/site.pyc&#39;>, <module &#39;__builtin__&#39; (built-in)>, <module &#39;sysconfig&#39; from &#39;/usr/lib/python2.7/sysconfig.pyc&#39;>, <module &#39;__main__&#39; from &#39;sys-test1.py&#39;>, None, <module &#39;abc&#39; from &#39;/usr/lib/python2.7/abc.pyc&#39;>, <module &#39;posixpath&#39; from &#39;/usr/lib/python2.7/posixpath.pyc&#39;>, <module &#39;_weakrefset&#39; from &#39;/usr/lib/python2.7/_weakrefset.pyc&#39;>, <module &#39;errno&#39; (built-in)>, None, <module &#39;sre_constants&#39; from &#39;/usr/lib/python2.7/sre_constants.pyc&#39;>, <module &#39;re&#39; from &#39;/usr/lib/python2.7/re.pyc&#39;>, <module &#39;_abcoll&#39; from &#39;/usr/lib/python2.7/_abcoll.pyc&#39;>, <module &#39;types&#39; from &#39;/usr/lib/python2.7/types.pyc&#39;>, <module &#39;_codecs&#39; (built-in)>, None, <module &#39;_warnings&#39; (built-in)>, <module &#39;genericpath&#39; from &#39;/usr/lib/python2.7/genericpath.pyc&#39;>, <module &#39;stat&#39; from &#39;/usr/lib/python2.7/stat.pyc&#39;>, <module &#39;zipimport&#39; (built-in)>, <module &#39;_sysconfigdata&#39; from &#39;/usr/lib/python2.7/_sysconfigdata.pyc&#39;>, <module &#39;warnings&#39; from &#39;/usr/lib/python2.7/warnings.pyc&#39;>, <module &#39;UserDict&#39; from &#39;/usr/lib/python2.7/UserDict.pyc&#39;>, <module &#39;encodings.ascii&#39; from &#39;/usr/lib/python2.7/encodings/ascii.pyc&#39;>, <module &#39;sys&#39; (built-in)>, <module &#39;codecs&#39; from &#39;/usr/lib/python2.7/codecs.pyc&#39;>, <module &#39;_sysconfigdata_nd&#39; from &#39;/usr/lib/python2.7/plat-x86_64-linux-gnu/_sysconfigdata_nd.pyc&#39;>, <module &#39;posixpath&#39; from &#39;/usr/lib/python2.7/posixpath.pyc&#39;>, <module &#39;sitecustomize&#39; from &#39;/usr/lib/python2.7/sitecustomize.pyc&#39;>, <module &#39;signal&#39; (built-in)>, <module &#39;traceback&#39; from &#39;/usr/lib/python2.7/traceback.pyc&#39;>, <module &#39;linecache&#39; from &#39;/usr/lib/python2.7/linecache.pyc&#39;>, <module &#39;posix&#39; (built-in)>, <module &#39;encodings.aliases&#39; from &#39;/usr/lib/python2.7/encodings/aliases.pyc&#39;>, <module &#39;exceptions&#39; (built-in)>, <module &#39;sre_parse&#39; from &#39;/usr/lib/python2.7/sre_parse.pyc&#39;>, <module &#39;os&#39; from &#39;/usr/lib/python2.7/os.pyc&#39;>, <module &#39;_weakref&#39; (built-in)>]
*******************************************************************************
<module &#39;os&#39; from &#39;/usr/lib/python2.7/os.pyc&#39;>
Copier après la connexion

(4) sys.stdin/sys.stdout/sys.stderr

stdin, stdout, stderr sont dans Tous les objets d'attribut de fichier en Python sont automatiquement liés aux entrées, sorties et erreurs standard dans l'environnement shell au démarrage de python. La redirection d'E/S du programme python dans le shell est fournie. par le shell et n'a rien à voir avec python lui-même. Relation. Le programme python redirige en interne les opérations de lecture et d'écriture stdin, stdout, stderr vers un objet interne

Entrée standard.

import sys
#print(&#39;Hi, %s!&#39; %input(&#39;Please enter your name: &#39;)) python3.*版本用input
print(&#39;Hi, %s!&#39; %raw_input(&#39;Please enter your name: &#39;)) #python2.*版本用raw_input
运行结果:
Please enter your name: er
Hi, er!
等同于:
 #!/usr/bin/python
import sys
print(&#39;Please enter your name:&#39;)
name=sys.stdin.readline()[:-1]
print(&#39;Hi, %s!&#39; %name)
标准输出
print(&#39;Hello World!\n&#39;)
等同于:
 #!/usr/bin/python
import sys
sys.stdout.write(&#39;output resule is good!\n&#39;)
其他实验
#!/usr/bin/python
import sys
for i in (sys.stdin, sys.stdout, sys.stderr):
    print(i)
Copier après la connexion

Résultat de l'exécution :

python sys-test1.py
<open file &#39;<stdin>&#39;, mode &#39;r&#39; at 0x7fa4e630f0c0>
<open file &#39;<stdout>&#39;, mode &#39;w&#39; at 0x7fa4e630f150>
<open file &#39;<stderr>&#39;, mode &#39;w&#39; at 0x7fa4e630f1e0>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal