Heim  >  Artikel  >  Backend-Entwicklung  >  Grundlegende Einführung in das Python-Systemmodul

Grundlegende Einführung in das Python-Systemmodul

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼Original
2019-06-14 14:47:037851Durchsuche

1: sys ist ein integriertes Modul von Python

Verwenden Sie die Importanweisung, um das sys-Modul aufzurufen.

Verwandte Empfehlungen: „Python-Video

Grundlegende Einführung in das Python-Systemmodul

Wenn import sys ausgeführt wird, wird Python im Verzeichnis im sys aufgeführt. Pfadvariable Suchen Sie die SYS-Moduldatei. Führen Sie dann die Anweisungen im Hauptblock dieses Moduls aus, um es zu initialisieren. Anschließend können Sie das Modul verwenden.

2: Allgemeine Funktionen des sys-Moduls

Sie können die dir()-Methode verwenden, um die im Modul verfügbaren Methoden anzuzeigen. Die Ergebnisse sind wie folgt: I Ich habe nicht viele davon verwendet, also stelle ich nur ein paar Methoden vor, die ich verwendet habe

$ 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']

(1) sys.argv implementiert die Übergabe von Parametern von außerhalb des Programms an das Programm

Die Variable sys.argv ist eine Zeichenfolge mit der Befehlszeilenparameterliste. Verwenden Sie die Befehlszeile, um Parameter an das Programm zu übergeben. Dabei ist der Name des Skripts immer der erste Parameter in der Liste sys.argv.

(2) sys.path enthält eine Liste von Verzeichnisnamen für Eingabemodule.

Erhalten Sie den Zeichenfolgensatz des angegebenen Modulsuchpfads. Sie können das geschriebene Modul unter einem bestimmten Pfad ablegen und es beim Importieren im Programm korrekt finden. Beim Importieren von module_name wird module.name basierend auf dem Pfad von sys.path durchsucht. Sie können den Modulpfad auch anpassen.

sys.path.append("custom module path")

(3) sys.exit([arg]) Exit in der Mitte des Programms, arg=0 bedeutet normales Exit

Im Allgemeinen wird der Interpreter automatisch beendet, wenn die Ausführung das Ende des Hauptprogramms erreicht. Wenn Sie das Programm jedoch mittendrin beenden müssen, können Sie die Funktion sys.exit mit einem optionalen ganzzahligen Parameter aufrufen, der an den Aufruf zurückgegeben wird Programm, was darauf hinweist, dass Sie den Aufruf von sys.exit im Hauptprogramm erfassen können. (0 bedeutet normaler Exit, andere sind Ausnahmen) Natürlich können Sie auch String-Parameter verwenden, um erfolglose Fehlermeldungen anzuzeigen.

(4) sys.modules

sys.modules ist ein globales Wörterbuch, das nach dem Start von Python in den Speicher geladen wird. Immer wenn ein Programmierer ein neues Modul importiert, zeichnet sys.modules das Modul automatisch auf. Wenn das Modul zum zweiten Mal importiert wird, sucht Python es direkt im Wörterbuch und beschleunigt so das Programm. Es verfügt über alle Methoden, die das Wörterbuch hat

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

sys.getdefaultencoding()

Rufen Sie die aktuelle Kodierung des Systems ab, die im Allgemeinen standardmäßig ASCII ist.

sys.setdefaultencoding()

Legen Sie die Systemstandardcodierung fest. Diese Methode wird beim Ausführen von dir (sys) nicht angezeigt. Wenn die Ausführung im Interpreter fehlschlägt, können Sie reload (sys) ausführen ) zuerst, nach der Ausführung von setdefaultencoding('utf8') wird die Systemstandardkodierung auf utf8 gesetzt. (Siehe Festlegen der Standardkodierung des Systems)

sys.getfilesystemencoding()

Erhält die vom Dateisystem verwendete Kodierung unter Windows und „utf-8“ unter Mac

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

stdin-, stdout- und stderr-Variablen enthalten Stream-Objekte, die Standard-E/A-Streams entsprechen Wenn die Ausgabe und der Druck nicht Ihren Anforderungen entsprechen, können Sie sie auch ersetzen und dann die Ausgabe und Eingabe auf andere Geräte (Gerät) umleiten oder sie auf nicht standardmäßige Weise verarbeiten.

(7) sys.platform

Holen Sie sich die aktuelle Systemplattform, zum Beispiel: Win32, Linux usw.

3: Beispiel

(1) sys.argv sys.path

$ cat sys-test.py
 #!/usr/bin/python
import sys
print 'The command line arguments are:'
for i in sys.argv:
    print i
print '\n\nThe PYTHONPATH is', sys.path, '\n'

Laufergebnis:

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

(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?")

Ergebnis ausführen:

hello
90

Das Programm gibt zuerst „Hallo“ aus, führt dann „exit(90)“ aus, löst eine Ausnahme aus und übergibt 90 an die übergebenen Werte Funktion und gibt 90 aus. Das Programm wird beendet. Das folgende „come?“ wird nicht gedruckt, da es zu diesem Zeitpunkt bereits beendet wurde. Wenn Sie sys.exit(0) in der Funktion „exitfunc“ entfernen, wird das Programm so lange ausgeführt, bis es „come?“ ausgibt.

(3) sys.modules

sys.modules.keys() gibt eine Liste aller importierten Module zurück

keys ist der Modulname

Werte ist das Modul

Module Return Path

import sys
print(sys.modules.keys())
print("**************************************************************************")
print(sys.modules.values())
print("**************************************************************************")
print(sys.modules["os"])

Run result:

['copy_reg', 'sre_compile', '_sre', 'encodings', 'site', '__builtin__', 'sysconfig', '__main__', 'encodings.encodings', 'abc', 'posixpath', '_weakrefset', 'errno', 'encodings.codecs', 'sre_constants', 're', '_abcoll', 'types', '_codecs', 'encodings.__builtin__', '_warnings', 'genericpath', 'stat', 'zipimport', '_sysconfigdata', 'warnings', 'UserDict', 'encodings.ascii', 'sys', 'codecs', '_sysconfigdata_nd', 'os.path', 'sitecustomize', 'signal', 'traceback', 'linecache', 'posix', 'encodings.aliases', 'exceptions', 'sre_parse', 'os', '_weakref']
*******************************************************************************
[<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;>

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

stdin, stdout, stderr sind in Alle Dateiattributobjekte in Python werden automatisch mit der Standardeingabe, -ausgabe und -fehlern in der Shell-Umgebung in Verbindung gebracht. Die E/A-Umleitung des Python-Programms in der Shell wird bereitgestellt von der Shell und hat nichts mit Python selbst zu tun. Das Python-Programm leitet intern Lese- und Schreibvorgänge an ein internes Objekt weiter

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)

Ausführungsergebnis:

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>

Das obige ist der detaillierte Inhalt vonGrundlegende Einführung in das Python-Systemmodul. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn