1. 程式人生 > >Python 中的os、sys模組

Python 中的os、sys模組

sys模組

sys模組主要是用於提供對python直譯器相關的操作

函式

  • sys.argv #命令列引數List,第一個元素是程式本身路徑

  • sys.path #返回模組的搜尋路徑,初始化時使用PYTHONPATH環境變數的值

  • sys.modules.keys() #返回所有已經匯入的模組列表

  • sys.modules #返回系統匯入的模組欄位,key是模組名,value是模組

  • sys.exc_info() #獲取當前正在處理的異常類,exc_type、exc_value、exc_traceback當前處理的異常詳細資訊

  • sys.exit(n) #退出程式,正常退出時exit(0)

  • sys.hexversion #獲取Python解釋程式的版本值,16進位制格式如:0x020403F0

  • sys.version #獲取Python解釋程式的版本資訊

  • sys.platform #返回作業系統平臺名稱

  • sys.maxint # 最大的Int值

  • sys.stdout #標準輸出

  • sys.stdout.write(‘aaa’) #標準輸出內容

  • sys.stdout.writelines() #無換行輸出

  • sys.stdin #標準輸入

  • sys.stdin.read() #輸入一行

  • sys.stderr #錯誤輸出

  • sys.exc_clear() #用來清除當前執行緒所出現的當前的或最近的錯誤資訊

  • sys.exec_prefix #返回平臺獨立的python檔案安裝的位置

  • sys.byteorder #本地位元組規則的指示器,big-endian平臺的值是’big’,little-endian平臺的值是’little’

  • sys.copyright #記錄python版權相關的東西

  • sys.api_version #直譯器的C的API版本

  • sys.version_info #’final’表示最終,也有’candidate’表示候選,表示版本級別,是否有後繼的發行

  • sys.getdefaultencoding() #返回當前你所用的預設的字元編碼格式

  • sys.getfilesystemencoding() #返回將Unicode檔名轉換成系統檔名的編碼的名字

  • sys.builtin_module_names #Python直譯器匯入的內建模組列表

  • sys.executable #Python解釋程式路徑

  • sys.getwindowsversion() #獲取Windows的版本

  • sys.stdin.readline() #從標準輸入讀一行,sys.stdout.write(a) 螢幕輸出a

  • sys.setdefaultencoding(name) #用來設定當前預設的字元編碼(詳細使用參考文件)

  • sys.displayhook(value) #如果value非空,這個函式會把他輸出到sys.stdout(詳細使用參考文件)

常用功能

sys.arg 獲取位置引數
print(sys.argv)

執行該指令碼,加引數的列印結果
python3 m_sys.py  1 2 3 4 5

['m_sys.py', '1', '2', '3', '4', '5']
可以發現 sys.arg返回的是整個位置引數,類似於shell的$0 $1...
sys.exit(n) 程式退出,n是退出是返回的物件
sys.version 獲取python版本
>>> sys.version
'3.5.1 (v3.5.1:37a07cee5969, Dec  5 2015, 21:12:44) \n[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]'
sys.path 返回模組的搜尋路徑列表,可通過新增自定義路徑,來新增自定義模組
>>> sys.path
['', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python35.zip', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/plat-darwin', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages']

sys.platform 返回當前系統平臺 linux平臺返回linux,windows平臺返回win32,MAC返回darwin
>>> sys.platform
'darwin
sys.stdout.write() 輸出內容
>>> sys.stdout.write('asd')
asd3
>>> sys.stdout.write('asd')
asd3
>>> sys.stdout.write('as')
as2

進度條

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
#pyversion:python3.5
#owner:fuzj


"""
sys 和python解析器相關
"""

import sys
import time



def view_bar(num,total):

    rate = num / total
    rate_num =  int(rate * 100)
    #r = '\r %d%%' %(rate_num)
    r = '\r%s>%d%%' % ('=' * rate_num, rate_num,)
    sys.stdout.write(r)
    sys.stdout.flush


if __name__ == '__main__':
    for i in range(0, 101):
        time.sleep(0.1)
        view_bar(i, 100)
效果:

====================================================================================================>100%

os模組

OS模組是Python標準庫中的一個用於訪問作業系統功能的模組,使用OS模組中提供的介面,可以實現跨平臺訪問

用於提供系統級別的操作

  • os.getcwd() 獲取當前工作目錄,即當前python指令碼工作的目錄路徑

  • os.chdir(dirname) 改變當前指令碼工作目錄;相當於shell下cd

  • os.curdir 返回當前目錄: (‘.’)

  • os.pardir 獲取當前目錄的父目錄字串名:(‘..’)

  • os.makedirs(‘dir1/dir2’) 可生成多層遞迴目錄

  • os.removedirs(‘dirname1’) 若目錄為空,則刪除,並遞迴到上一級目錄,如若也為空,則刪除,依此類推

  • os.mkdir(‘dirname’) 生成單級目錄;相當於shell中mkdir dirname

  • os.rmdir(‘dirname’) 刪除單級空目錄,若目錄不為空則無法刪除,報錯;相當於shell中rmdir dirname

  • os.listdir(‘dirname’) 列出指定目錄下的所有檔案和子目錄,包括隱藏檔案,並以列表方式列印

  • os.remove() 刪除一個檔案

  • os.rename(oldname,new) 重新命名檔案/目錄

  • os.stat(‘path/filename’) 獲取檔案/目錄資訊

  • os.sep 作業系統特定的路徑分隔符,win下為,Linux下為/

  • os.linesep 當前平臺使用的行終止符,win下為\t\n,Linux下為\n

  • os.pathsep 用於分割檔案路徑的字串

  • os.name 字串指示當前使用平臺。win->’nt’; Linux->’posix’

  • os.system(bash command) 執行shell命令,直接顯示

  • os.environ 獲取系統環境變數

  • os.path.abspath(path) 返回path規範化的絕對路徑

  • os.path.split(path) 將path分割成目錄和檔名二元組返回

  • os.path.dirname(path) 返回path的目錄。其實就是os.path.split(path)的第一個元素

  • os.path.basename(path) 返回path最後的檔名。如何path以/或\結尾,那麼就會返回空值。即os.path.split(path)的第二個元素

  • os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False

  • os.path.lexists #路徑存在則返回True,路徑損壞也返回True

  • os.path.isabs(path) 如果path是絕對路徑,返回True

  • os.path.isfile(path) 如果path是一個存在的檔案,返回True。否則返回False

  • os.path.isdir(path) 如果path是一個存在的目錄,則返回True。否則返回False

  • os.path.join(path1[, path2[, …]]) 將多個路徑組合後返回,第一個絕對路徑之前的引數將被忽略

  • os.path.getatime(path) 返回path所指向的檔案或者目錄的最後存取時間

  • os.path.getmtime(path) 返回path所指向的檔案或者目錄的最後修改時間

  • os.path.commonprefix(list) #返回list(多個路徑)中,所有path共有的最長的路徑。

  • os.path.expanduser(path) #把path中包含的”~”和”~user”轉換成使用者目錄

  • os.path.expandvars(path) #根據環境變數的值替換path中包含的”name{name}”

  • os.access(‘pathfile’,os.W_OK) 檢驗檔案許可權模式,輸出True,False

  • os.chmod(‘pathfile’,os.W_OK) 改變檔案許可權模式