Python sys模塊
sys 模塊提供了許多函數和變量來處理 Python 運行時環境的不同部分.
處理命令行參數
sys.argv #現從程序外部向程序傳遞參數[*],0代表程序本身
#!/usr/bin/env python # -*- coding:utf-8 -*- # @Time : 2017/11/29 0029 11:31 # @Author : ming import sys print(sys.argv) if len(sys.argv) > 1: print(sys.argv[0]) print(sys.argv[1]) print(sys.argv[2]) else: print("沒有傳遞參數")
C:\Users\Administrator\PycharmProject\MyProject\myfunc>python ceshi.py arg1 arg2 ['ceshi.py', 'arg1', 'arg2'] # 說明sys.argv 是一個包含參數的列表 ceshi.py #sys.argv[0] 代表腳本自身 arg1 # 第一個參數 arg2 # 第一個參數
sys.path #獲取指定模塊搜索路徑的字符串集合,可以將寫好的模塊放在得到的某個路徑下,就可以在程序中import時正確找到
#!/usr/bin/env python # -*- coding:utf-8 -*- # @Time : 2017/11/29 0029 11:31 # @Author : ming import sys print(type(sys.path)) for i in sys.path: print(i)
運行結果: <class 'list'> # 說面sys.path 是一個列表 該列表中包含所有py文件可被搜索的路徑或文件夾,只有在該目錄中的模塊或py文件才可以被imporp導入 C:\Users\Administrator\PycharmProject\MyProject\myfunc C:\Users\Administrator\PycharmProject\MyProject C:\Users\Administrator\AppData\Local\Programs\Python\Python35\python35.zip C:\Users\Administrator\AppData\Local\Programs\Python\Python35\DLLs C:\Users\Administrator\AppData\Local\Programs\Python\Python35\lib C:\Users\Administrator\AppData\Local\Programs\Python\Python35 C:\Users\Administrator\AppData\Local\Programs\Python\Python35\lib\site-packages
sys.version #打印python版本
sys.platform # 查看系統版本
sys.getdefaultencoding() # 獲取系統當前編碼
sys.getfilesystemencoding() # 獲取文件系統使用編碼方式,Windows下返回'mbcs',mac下返回'utf-8'
#!/usr/bin/env python # -*- coding:utf-8 -*- import sys print(sys.version) # 查看平台版本 print(sys.platform) # 查看系統版本 print(sys.getdefaultencoding()) # 獲取系統當前編碼 print(sys.getfilesystemencoding()) # 獲取文件系統使用編碼方式,Windows下返回'mbcs',mac下返回'utf-8'
運行結果: 3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01:54:25) [MSC v.1900 64 bit (AMD64)] win32 utf-8 mbcs
sys.stdin #標准IO流,如果需要更好地控制輸出,而print 不能滿足你的要求, 它們就是你所需要的. 你也可以替換它們, 這時候你就可以重定向輸出和輸入到其它設備( device ), 或者以非標准的方式處理它們
sys.stdout
sys.stderr
制作進度條: 由於標准輸入 不會自動回車 #!/usr/bin/env python # -*- coding:utf-8 -*- import sys, time for i in range(51): sys.stdout.write("\r") sys.stdout.write("%s%% | %s" % (int(i / 50 * 100), i * "|")) sys.stdout.flush() time.sleep(0.05)
運行結果: 動態的顯示以下內容
100% | ||||||||||||||||||||||||||||||||||||||||||||||||||