python sys模塊使用詳情


 

 python常用模塊目錄

 

sys模塊提供了一系列有關Python運行環境的變量和函數。
1、sys.argv
可以用sys.argv獲取當前正在執行的命令行參數的參數列表(list)。
變量解釋
sys.argv[0]當前程序名
sys.argv[1]第一個參數
sys.argv[2]第二個參數
len(sys.argv)-1 參數個數(減去文件名)

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'] ,列表第一個元素為程序執行相對路徑,第二個元素開始為程序傳參

2、sys.path
返回模塊的搜索路徑,初始化時使用PYTHONPATH環境變量的值

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

3、sys.platform
獲取當前執行環境的平台,如win32表示是Windows系統,linux2表示是linux平台

print(sys.platform)
-------------結果:
win32  

-------------結果:
[root@xiaoma /root] test!
#python mcw.py 
linux2

4、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

5、sys.version
獲取Python解釋程序的版本信息

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)]

6、sys.getrefcount

 獲取一個值的應用計數

a = [11,22,33]
b = a
print(sys.getrefcount(a))
--------------結果:
3 #a,b,還有gerefcount方法三個都在使用這個列表

7、sys.getrecursionlimit python默認支持的遞歸數量
8、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 方法。然而,它們仍然是類文件對象,因此你可以將其它任何 (類) 文件對象賦值給它們來重定向其輸出。

9、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/1175267
2)https://blog.csdn.net/u013176681/article/details/53607565


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM