python經常使用模塊目錄html
sys模塊提供了一系列有關Python運行環境的變量和函數。
一、sys.argv
能夠用sys.argv獲取當前正在執行的命令行參數的參數列表(list)。
變量解釋
sys.argv[0]當前程序名
sys.argv[1]第一個參數
sys.argv[2]第二個參數
len(sys.argv)-1 參數個數(減去文件名)python
1) import sys print(sys.argv) print(sys.argv[0]) print(sys.argv[1]) print("第二個參數:%s"%sys.argv[2]) print("參數個數:%s"%(len(sys.argv)-1)) -------------------結果: #python /root/mcw.py arg1 arg2 ['/root/mcw.py', 'arg1', 'arg2'] /root/mcw.py #當前程序名 arg1 第二個參數:arg2 參數個數:2 2) 若是執行用的相對路徑,返回的是相對路徑 print(sys.argv[0]) ----------------結果: [root@xiaoma /root] test! #python ./mcw.py ./mcw.py
#sys.argv =['/root/mcw.py', 'arg1', 'arg2'] ,列表第一個元素爲程序執行相對路徑,第二個元素開始爲程序傳參
二、sys.path
返回模塊的搜索路徑,初始化時使用PYTHONPATH環境變量的值linux
import sys print(sys.path) ---------------------結果: ['D:\\aPython_full目錄\\小馬過河的代碼練習', 'C:\\mcw', 'C:\\mcw\\venv\\Scripts\\python36.zip', 'C:\\python3\\DLLs', 'C:\\python3\\lib', 'C:\\python3', 'C:\\mcw\\venv', 'C:\\mcw\\venv\\lib\\site-packages', 'C:\\mcw\\venv\\lib\\site-packages\\setuptools-39.1.0-py3.6.egg', 'C:\\mcw\\venv\\lib\\site-packages\\pip-10.0.1-py3.6.egg', 'C:\\軟件安裝\\PyCharm 2018.3.5\\helpers\\pycharm_matplotlib_backend'] 添加系統環境變量: import sys,os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) print(BASE_DIR) #添加系統環境變量 sys.path.append(BASE_DIR) print(sys.path)
-------
import sys
sys.path.append("C:\python3\Scripts")
print(sys.path)
------------------結果:
['D:\\.........., 'C:\\python3\\Scripts']vim
三、sys.platform
獲取當前執行環境的平臺,如win32表示是Windows系統,linux2表示是linux平臺app
print(sys.platform) -------------結果: win32 -------------結果: [root@xiaoma /root] test! #python mcw.py linux2
四、sys.exit(n)
調用sys.exit(n)能夠中途退出程序,當參數非0時,會引起一個SystemExit異常,從而能夠在主程序中捕獲該異常。函數
#vim mcw.py import sys sys.exit(3) ----------結果: [root@xiaoma /root] test! #python mcw.py [root@xiaoma /root] test! #echo $? 3
五、sys.version
獲取Python解釋程序的版本信息ui
import sys print(sys.version) --------------結果: 3.6.8 (tags/v3.6.8:3c6b436a57, Dec 23 2018, 23:31:17) [MSC v.1916 32 bit (Intel)] import sys print(sys.version) --------------結果: [root@xiaoma /root] test! #python mcw.py 2.7.5 (default, Nov 6 2016, 00:28:07) [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]
六、sys.getrefcountspa
獲取一個值的應用計數.net
a = [11,22,33]
b = a
print(sys.getrefcount(a))
--------------結果:
3 #a,b,還有gerefcount方法三個都在使用這個列表命令行
七、sys.getrecursionlimit python默認支持的遞歸數量
八、sys.stdout.write 能夠作輸出重定向
for i in range(3): print("魔降風雲變") import sys for i in range(3): sys.stdout.write('小馬過河') -----------------結果: 魔降風雲變 魔降風雲變 魔降風雲變 小馬過河小馬過河小馬過河 import sys for i in range(3): sys.stderr.write('小馬過河') ------------------結果: 小馬過河小馬過河小馬過河
stdout 是一個類文件對象;調用它的 write 函數能夠打印出你給定的任何字符串。
實際上,這就是 print 函數真正作的事情;它在你打印的字符串後面加上一個硬回車,而後調用 sys.stdout.write 函數。
在最簡單的例子中,stdout 和 stderr 把它們的輸出發送到相同的地方
和 stdout 同樣,stderr 並不爲你添加硬回車;若是須要,要本身加上。
stdout 和 stderr 都是類文件對象,可是它們都是隻寫的。
它們都沒有 read 方法,只有 write 方法。然而,它們仍然是類文件對象,所以你能夠將其它任何 (類) 文件對象賦值給它們來重定向其輸出。
九、sys.modules
import sys,os print(sys.modules.keys()) -----------------------結果; dict_keys(['builtins', 'sys', '_frozen_importlib', '_imp', '_warnings', '_thread', '_weakref', '_frozen_importlib_external', '_io', 'marshal', 'nt', 'winreg', 'zipimport', 'encodings', 'codecs', '_codecs', 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_weakrefset', 'site', 'os', 'errno', 'stat', '_stat', 'ntpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', '_bootlocale', '_locale', 'encodings.gbk', '_codecs_cn', '_multibytecodec', 'sysconfig', 'encodings.cp437', 'sitecustomize'])
參考連接:1)https://cloud.tencent.com/developer/article/11752672)https://blog.csdn.net/u013176681/article/details/53607565