sys.argv詳見python文件操作筆記
1.sys.version
獲取Python解釋程序的版本信息
import sys
pythonVersion = sys.version
print(pythonVersion)
'''
3.7.4 (default, Aug 13 2019, 15:17:50)
[Clang 4.0.1 (tags/RELEASE_401/final)]
'''
2.sys.exit(n)
退出程序,正常退出時exit(0)
a = 2
if a == 1:
sys.exit(0)
else:
sys.exit(2)
'''
Process finished with exit code 2
'''
3.sys.platform
返回操作系統平台名稱
platformName = sys.platform
print(platformName)
'''
darwin
'''
為什么在Mac OS X上鍵入sys.platform時,輸出是“darwin”?
答:因為Mac OS X的核心是 the Darwin OS
從鏈接的WikiPedia頁面引用:
Darwin forms the core set of components upon which Mac OS X and iOS are based.
Python僅使用相同的平台標識符。
4.sys.modules
Python中所有加載到內存的模塊都放在sys.modules。
sys.modules是一個全局字典,字典sys.modules對於加載模塊起到了緩沖的作用,當import一個模塊時首先會在這個列表中查找是否已經加載了此模塊,如果加載了則只是將模塊的名字加入到正在調用import的模塊的Local名字空間中。當第二次再導入該模塊時,python會直接到字典中查找,從而加快了程序運行的速度。
模塊文件可以是py、pyc、pyd,找到后將模塊載入內存,並加入到sys.modules中,並將名稱導入到當前的Local名字空間。
sys.modules[__name__]
A way to get a handle to the current running module in Python:
import sys
module = sys.modules[__name__]
it really only works if you are doing the whole sys.modules litany in the very module you want to get a handle to.
所以,getattr(sys.modules[__name__], func_name)的含義便是找到當前文件下名稱為func_name的對象(類對象或者函數對象)。
5.sys.path.append()
添加路徑,用於調用模塊
當我們導入一個模塊時:import xxx,默認情況下python解析器會搜索當前目錄、已安裝的內置模塊和第三方模塊,搜索路徑存放在sys模塊的path中:
import sys
print(sys.path)
'''
['/Users/xiexinran/Desktop/亂七八糟的.py', '/Users/xiexinran/Desktop/亂七八糟的.py', '/Users/xiexinran/anaconda3/lib/python37.zip', '/Users/xiexinran/anaconda3/lib/python3.7', '/Users/xiexinran/anaconda3/lib/python3.7/lib-dynload', '/Users/xiexinran/anaconda3/lib/python3.7/site-packages', '/Users/xiexinran/anaconda3/lib/python3.7/site-packages/aeosa']
Process finished with exit code 0
'''
sys.path 返回的是一個列表。
該路徑已經添加到系統的環境變量了,當我們要添加自己的搜索目錄時,可以通過列表的append()方法;
對於模塊和自己寫的腳本不在同一個目錄下,在腳本開頭加sys.path.append('xxx'):
這種方法是運行時修改,腳本運行后就會失效。