> 백엔드 개발 > 파이썬 튜토리얼 > Python sys 모듈에 대한 기본 소개

Python sys 모듈에 대한 기본 소개

爱喝马黛茶的安东尼
풀어 주다: 2019-06-14 14:47:03
원래의
7905명이 탐색했습니다.

1: sys는 Python에 내장된 모듈입니다.

import 문을 사용하여 sys 모듈에 들어갑니다.

관련 권장 사항: "python video"

Python sys 모듈에 대한 기본 소개

import sys가 실행되면 Python은 sys.path 변수에 나열된 디렉터리에서 sys 모듈 파일을 찾습니다. 그런 다음 이 모듈의 메인 블록에 있는 명령문을 실행하여 초기화하면 모듈을 사용할 수 있습니다.

2: sys 모듈의 공통 기능

dir() 메소드를 통해 모듈에서 사용 가능한 메소드를 확인할 수 있습니다. 그 결과는 다음과 같습니다. 아직 많이 사용하지 않았기 때문에 간단히 소개하겠습니다.

$ 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는 프로그램 외부에서 프로그램으로 매개변수 전달을 구현합니다. sys.argv 변수는 명령줄 매개변수를 포함하는 문자열 목록입니다. 그 중 스크립트 이름은 항상 sys.argv 목록의 첫 번째 매개변수입니다.

(2) sys.path에는 입력 모듈의 디렉터리 이름 목록이 포함되어 있습니다.

지정된 모듈 검색 경로의 문자열 모음을 가져옵니다. 작성한 모듈을 가져온 특정 경로에 넣을 수 있으며 프로그램에서 가져올 때 올바르게 찾을 수 있습니다. module_name을 가져올 때 sys.path의 경로를 기준으로 module.name이 검색됩니다. 모듈 경로를 사용자 정의할 수도 있습니다.

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

(3) sys.exit([arg]) 프로그램 중간에 종료, arg=0은 정상 종료를 의미

일반적으로 다음 위치까지 실행됩니다. 인터프리터는 자동으로 종료되지만 프로그램을 중간에 종료해야 하는 경우 호출 프로그램에 반환된 선택적 정수 매개 변수를 사용하여 sys.exit 함수를 호출할 수 있습니다. 이는 sys에 대한 호출을 캡처할 수 있음을 나타냅니다. 메인 프로그램을 종료합니다. (0은 정상 종료를 의미하고 나머지는 예외를 의미합니다.) 물론 문자열 매개변수를 사용하여 실패한 오류 메시지를 나타낼 수도 있습니다.

(4) sys.modules

sys.modules는 Python이 시작된 후 메모리에 로드되는 전역 사전입니다. 프로그래머가 새 모듈을 가져올 때마다 sys.modules는 자동으로 모듈을 기록합니다. 모듈을 두 번째로 가져오면 Python은 사전에서 직접 해당 모듈을 찾아 프로그램 속도를 높입니다.

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

sys.getdefaultencoding()

시스템의 현재 인코딩을 가져옵니다. 일반적으로 기본값은 ASCII입니다.

sys.setdefaultencoding()

시스템 기본 인코딩을 설정합니다. dir(sys) 실행 시 이 메서드가 표시되지 않습니다. 인터프리터에서 실행이 실패하면 reload(sys)를 먼저 실행한 다음 setdefaultencoding( 'utf8' ), 이때 시스템 기본 인코딩은 utf8로 설정됩니다. (시스템 기본 인코딩 설정 참조)

sys.getfilesystemencoding()

파일 시스템에서 사용하는 인코딩을 가져옵니다. Windows에서는 'mbcs'를 반환하고 mac에서는 'utf-8'을 반환합니다

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

stdin , stdout 및 stderr 변수에는 출력에 대한 추가 제어가 필요하고 인쇄가 요구 사항을 충족하지 않는 경우에도 필요합니다. 이를 교체한 다음 출력 및 입력을 다른 장치(장치)로 리디렉션하거나 비표준 방식으로 처리할 수 있습니다.

(7) sys.platform

win32, Linux와 같은 현재 시스템 플랫폼을 가져옵니다. 기다리다.

3: 예

(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'
로그인 후 복사

실행 결과:

$ 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?")
로그인 후 복사

실행 결과:

hello
90
로그인 후 복사

프로그램이 먼저 hello를 인쇄한 다음 종료(90)를 실행하고 예외를 발생시키고 값에 90을 전달합니다. 값은 전달된 함수에서 실행되고 프로그램은 90을 인쇄하고 종료됩니다. 다음 "come?"은 이미 종료되었기 때문에 출력되지 않습니다. 이때, exitfunc 함수에서 sys.exit(0)을 제거하면 "come?"이 출력될 때까지 프로그램이 계속 실행됩니다. (3) sys .modules

sys.modules.keys()는 가져온 모든 모듈의 목록을 반환합니다.


keys는 모듈 이름이고

values는 모듈입니다.

모듈 반환 경로

import sys
print(sys.modules.keys())
print("**************************************************************************")
print(sys.modules.values())
print("**************************************************************************")
print(sys.modules["os"])
로그인 후 복사

실행 결과:

['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은 모두 Python의 파일 속성 개체입니다. python이 시작됩니다. 쉘 I/O 리디렉션의 Python 프로그램은 쉘에서 제공되며 Python 자체와는 아무런 관련이 없습니다. Python 프로그램은 내부적으로 stdin, stdout 및 stderr 읽기 및 쓰기 작업을 내부 개체로 리디렉션합니다. 표준 입력

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)
로그인 후 복사

실행 결과:

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>
로그인 후 복사

위 내용은 Python sys 모듈에 대한 기본 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿