Python中的sys模組和os模組
sys模組
大多屬性描述程式的執行環境,是python中十分重要的基礎模組
- sys.argv:命令列引數,它是一個列表,不存在argc
for i in sys.argv:
print i
執行結果:
test.py
- sys.platform
獲取當前執行環境的平臺
print sys.platform
執行結果:
linux2
win32表示是Windows 32bit作業系統,linux2表示是linux平臺;
sys.modules
一個字典物件, 描述了當前程式都載入了哪些模組(模組名為key, 模組物件為value).sys.version
Python的版本資訊
print sys.version
輸出:
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]
sys.stdin, sys.stdout, sys.stderr
三個檔案物件. 分別對應標準輸入, 標準輸出, 和標準錯誤sys.path
path是一個目錄列表,供Python從中查詢第三方擴充套件模組。
使用sys.path.append(“mine module path”)
來新增自定義的module
- sys.sys.builtin_module_names
返回一個列表,包含內建模組的名字。
print sys.sys.builtin_module_names
執行結果:
(‘builtin‘, ‘main‘, ‘_ast’, ‘_codecs’, ‘_sre’, ‘_symtable’, ‘_warnings’, ‘_weakref’, ‘errno’, ‘exceptions’, ‘gc’, ‘imp’, ‘marshal’, ‘posix’, ‘pwd’, ‘signal’, ‘sys’, ‘thread’, ‘zipimport’)
- sys.byteorder
返回當前機器的位元組序. 值是 ‘big’ 或者 ‘little’
print sys.byteorder
執行結果:
little
- sys.executable
Python解釋權的絕對路徑
print sys,executable
執行結果:
/usr/bin/python2.7
- sys.exit()
退出Python
當引數非零時,會引發一個SystemExit異常,我們可以在主程式中捕獲該異常
try:
sys.exit(1)
except SystemExit:
print 'SystemExit exit 1'
執行結果:
SystemExit exit 1
sys.getrefcount()
獲取物件的引用計數. 但是得到的結果會比實際的大(因為呼叫函式
sys.getrefcount()過程中也建立了新的引用).sys.getrecursionlimit()
獲取Python直譯器的最大遞迴深度
print sys.getrecursionlimit()
執行結果:
1000
- sys.getsizeof()
獲取一個物件佔用的記憶體空間大小(位元組數).
def Func():
pass
print sys.getsizeof('aaaa')
print sys.getsizeof(1)
print sys.getsizeof(1.1)
print sys.getsizeof([])
print sys.getsizeof(())
print sys.getsizeof({})
print sys.getsizeof(Func)
print sys.getsizeof(sys)
執行結果:
41
24
24
72
56
280
120
56
os模組
程序資訊:
包含普遍的作業系統功能,它不受平臺限制,如果想要程式與平臺無關,這個模組十分重要。
- os.getpid(): 獲取程序的pid.
- os.getppid(): 獲取父程序的pid.
- os.getuid(): 獲取使用者id.
- os.getenv(): 按key獲取當前的環境變數.
- os.putenv(): 按key修改指定的環境變數.
print os.getpid()
print os.getppid()
print os.getuid()
print os.getenv('PATH')
執行結果:
28044
24681
1000
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/sdt/.local/bin:/home/sdt/bin
- os.uname(): 返回一個五元組, 描述作業系統的詳細資訊
print os.uname()
執行結果:
(‘Linux’, ‘localhost.localdomain’, ‘3.10.0-693.el7.x86_64’, ‘#1 SMP Tue Aug 22 21:09:27 UTC 2017’, ‘x86_64’)
程序管理
- os.abort():生成一個SIGABRT訊號,一般會終止程序
- os.exec():程序替換函式族
- os.fork():建立子程序
- os.wait()/os.waitpid():程序等待,返回一個元組,表示子程序的pid和退出碼
- os.kill():發訊號
- ……
檔案操作
- os.open(file, flags[, mode]) :開啟file同時根據flags設定變數flags
- os.close(fd):關閉檔案描述符fd
- os.read(fd,n):從檔案描述符 fd中讀取最多n個位元組
- os.write(fd,str):寫入字串到檔案描述符 fd中
- os.pipe():寫入字串到檔案描述符 fd中
- os.dup(fd):返回檔案描述符fd的拷貝
- os.dup2(fd,fd2):使fd2成為fd2的拷貝
- ……
其他
- os.getcwd()
得到當前工作目錄,即當前Python指令碼工作的目錄路徑。 - os.listdir()
返回指定目錄下的所有檔案和目錄名。 - os.remove()
刪除一個檔案 - os.system(‘shell命令’)
執行Shell命令 - os.name
指示正在使用的平臺。如果是window 則用’nt’表示,對於Linux/Unix使用者,它是’posix’。 - os.getloadavg(): 獲取系統負載. 返回一個三元組, 返回最近1分鐘, 5分鐘, 15分鐘的系統負載的值.
關於系統負載, 其實是描述系統 繁忙程度 的重要指標. 數字越大說明系統就越忙.
os模組中的函式介面很多,後面有時間再補充~