日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中sys模块有什么用_Python sys模块用法详解

發布時間:2024/10/14 python 65 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中sys模块有什么用_Python sys模块用法详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

sys 模塊代表了 Python 解釋器,主要用于獲取和 Python 解釋器相關的信息。

在 Python 的交互式解釋器中先導入 sys 模塊,然后輸入 [e for e in dir(sys) if not e.startswith('_')] 命令(sys 模塊沒有 __all__ 變量),可以看到如下輸出結果:

>>> [e for e in dir(sys) if not e.startswith('_')] ['api_version', 'argv', 'base_exec_prefix', 'base_prefix', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dllhandle', 'dont_write_bytecode', 'exc_info', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 'get_asyncgen_hooks', 'get_coroutine_wrapper', 'getallocatedblocks', 'getcheckinterval', 'getdefaultencoding', 'getfilesystemencodeerrors', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'getswitchinterval', 'gettrace', 'getwindowsversion', 'hash_info', 'hexversion', 'implementation', 'int_info', 'intern', 'is_finalizing', 'last_traceback', 'last_type', 'last_value', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'set_asyncgen_hooks', 'set_coroutine_wrapper', 'setcheckinterval', 'setprofile', 'setrecursionlimit', 'setswitchinterval', 'settrace', 'stderr', 'stdin', 'stdout', 'thread_info', 'version', 'version_info', 'warnoptions', 'winver']

上面列出的程序單元就是 sys 模塊所包含的全部程序單元(包括變量、函數等),讀者不要被它們嚇著了,以為這些全都需要記下來。實際上完全沒有必要,通常都是用到哪些模塊就去查閱其對應的說明文檔和參考手冊。

sys 模塊的參考頁面為 https://docs.python.org/3/library/sys.html。

需要說明的是,大部分時候用不到 sys 模塊里很冷僻的功能,因此本節只介紹 sys 模塊中常用的屬性和函數:

sys.argv:獲取運行 Python 程序的命令行參數。其中 sys.argv[0] 通常就是指該 Python 程序,sys.argv[1] 代表為 Python 程序提供的第一個參數,sys.argv[2] 代表為 Python 程序提供的第二個參數……依此類推。

sys.byteorder:顯示本地字節序的指示符。如果本地字節序是大端模式,則該屬性返回 big;否則返回 little。

sys.copyright:該屬性返回與 Python 解釋器有關的版權信息。

sys.executable:該屬性返回 Python 解釋器在磁盤上的存儲路徑。

sys.exit():通過引發 SystemExit 異常來退出程序。將其放在 try 塊中不能阻止 finally 塊的執行。

sys.flags:該只讀屬性返回運行 Python 命令時指定的旗標。

sys.getfilesystemencoding():返回在當前系統中保存文件所用的字符集。

sys.getrefcount(object):返回指定對象的引用計數。前面介紹過,當 object 對象的引用計數為 0 時,系統會回收該對象。

sys.getrecursionlimit():返回 Python 解釋器當前支持的遞歸深度。該屬性可通過 setrecursionlimit() 方法重新設置。

sys.getswitchinterval():返回在當前 Python 解釋器中線程切換的時間間隔。該屬性可通過 setswitchinterval() 函數改變。

sys.implementation:返回當前 Python 解釋器的實現。

sys.maxsize:返回 Python 整數支持的最大值。在 32 位平臺上,該屬性值為 2**31-1;在 64 位平臺上,該屬性值為 2**63-1。

sys.modules:返回模塊名和載入模塊對應關系的字典。

sys.path:該屬性指定 Python 查找模塊的路徑列表。程序可通過修改該屬性來動態增加 Python 加載模塊的路徑。

sys.platform:返回 Python 解釋器所在平臺的標識符。

sys.stdin:返回系統的標準輸入流——一個類文件對象。

sys.stdout:返回系統的標準輸出流——一個類文件對象。

sys.stderr:返回系統的錯誤輸出流——一個類文件對象。

sys.version:返回當前 Python 解釋器的版本信息。

sys.winver:返回當前 Python 解釋器的主版本號。

下面程序示范了使用 sys 模塊的部分功能:

import sys # 顯示本地字節序的指示符。 print(sys.byteorder) # 顯示Python解釋器有關的版權信息 print(sys.copyright) # 顯示Python解釋器在磁盤上的存儲路徑。 print(sys.executable) # 顯示當前系統上保存文件所用的字符集。 print(sys.getfilesystemencoding()) # 顯示Python整數支持的最大值 print(sys.maxsize) # 顯示Python解釋器所在平臺 print(sys.platform) # 顯示當前Python解釋器的版本信息。 print(sys.version) # 返回當前Python解釋器的主版本號。 print(sys.winver)

上面程序分別調用了 sys 模塊的部分屬性和函數。運行該程序,可以看到如下輸出結果:

little

Copyright (c) 2001-2017 Python Software Foundation.

All Rights Reserved.

Copyright (c) 2000 BeOpen.com.

All Rights Reserved.

Copyright (c) 1995-2001 Corporation for National Research Initiatives.

All Rights Reserved.

Copyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam.

All Rights Reserved.

D:python3.6pythonw.exe

utf-8

9223372036854775807

win32

3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:57:36) [MSC v.1900 64 bit (AMD64)] 3.6

從上面的輸出結果可以看出,Windows 7 系統(作者使用的)的字節序是小端模式,將 Python 解釋器保存在 D:python3.6pythonw.exe 處,當前 Python 版本是 3.6.2。

獲取運行參數

通過 sys 模塊的 argv 屬性可獲取運行 Python 程序的命令行參數。argv 屬性值是一個列表,其列表元素和運行參數的關系如圖 1 所示。

圖 1 運行 Python 程序時命令行參數與 argv 列表的關系

因此,如果需要獲取運行 Python 程序時傳入的參數,可以通過 argv[1]、argv[2]……來獲取。例如下面程序(編寫在 argv_test.py 文件中):

from sys import argv # 輸出argv列表的長度 print(len(argv)) # 遍歷argv列表的每個元素 for arg in argv: print(arg)

上面程序是最簡單的“Hello World”級的程序,只是這個程序增加了輸出 argv 列表的長度、遍歷 argv 列表元素的代碼。使用“python argv_test.py” 命令運行上面程序,可以看到如下輸出結果:

1

argv_test.py

此時看到 argv 列表的長度為 1,argv 的第一個元素就是被運行的 Python 程序。

如果改為使用如下命令來運行該程序:

python argv_test.py Python Swift

可以看到如下輸出結果:

3

argv_test.py

Python

Swift

上面兩次運行的結果和前面介紹的內容完全一致。

如果某個參數本身包含了空格,則應該將該參數用雙引號("")括起來;否則,Python 會把這個空格當成參數分隔符,而不是參數本身。例如,采用如下命令來運行上面程序:

python argv test.py "Python Swift"

可以看到 argv 列表的長度是 2,第一個列表元素是被運行的 Python 程序,第二個列表元素的值是“Python Swift”。

動態修改模塊加載路徑

前面介紹了使用 PYTHONPATH 環境變量來添加 Python 模塊的加載路徑,但這種方式必須預先設置好。如果需要在程序運行時動態改變 Python 模塊的加載路徑,則可通過 sys.path 屬性來實現。

sys.path 也是很有用的一個屬性,它可用于在程序運行時為 Python 動態修改模塊加載路徑。例如,如下程序在運行時動態指定加載 g:fk_ext 目錄下的模塊:

import sys # 動態添加g:fk_ext路徑作為模塊加載路徑 sys.path.append('g:\fk_ext') # 加載g:fk_ext路徑下的hello模塊 import hello

為了成功運行該程序,需要在 G: 盤中創建 fk_ext 目錄,并在該目錄下添加 hello.py 模塊文件。

總結

以上是生活随笔為你收集整理的python中sys模块有什么用_Python sys模块用法详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。