Python內(nèi)置的os模塊可以調(diào)用操作系統(tǒng)提供的接口函數(shù),對文件或目錄進(jìn)行操作(實(shí)際上操作系統(tǒng)是不允許應(yīng)用程序直接訪問和操作文件和目錄的胀蛮,讀寫文件就是請求操作系統(tǒng)打開一個(gè)文件對象亚兄,通常稱為文件描述符醋安。然后假丧,通過操作系統(tǒng)提供的接口從這個(gè)文件對象中讀取數(shù)據(jù)珍昨,或者把數(shù)據(jù)寫入這個(gè)文件對象县耽。)
os模塊一般有以下功能:
>>> import os
>>> os.name # 操作系統(tǒng)名字
'posix'
>>> os.uname() #獲取詳細(xì)的操作系統(tǒng)信息,windows不支持镣典。
('Darwin', 'iMac.local', '13.3.0', 'Darwin Kernel Version 13.3.0: Tue Jun 3 21:27:35 PDT 2014; root:xnu-2422.110.17~1/RELEASE_X86_64', 'x86_64')
注:如果是posix兔毙,操作系統(tǒng)是linux,Unix,Mac OS X.如果是nt兄春,操作系統(tǒng)則是windows澎剥。
>>> os.environ #在操作系統(tǒng)中定義的環(huán)境變量,全部保存在os.environ這個(gè)dict中赶舆,可以直接查看
{'VERSIONER_PYTHON_PREFER_32_BIT': 'no', 'TERM_PROGRAM_VERSION': '326', 'LOGNAME': 'michael', 'USER': 'michael', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/mysql/bin', ...}
>>> os.getenv('PATH') #要獲取某個(gè)環(huán)境變量的值哑姚,可以調(diào)用os.getenv()函數(shù)
'/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/mysql/bin'
# 查看當(dāng)前目錄的絕對路徑:
>>> os.path.abspath('.')
'/Users/michael'
# 對路徑進(jìn)行連接組合,可以直接處理不同系統(tǒng)的路徑分隔符。
>>> os.path.join('/Users/michael', 'testdir')
'/Users/michael/testdir'
# 然后創(chuàng)建一個(gè)目錄:
>>> os.mkdir('/Users/michael/testdir')
# 刪掉一個(gè)目錄:
>>> os.rmdir('/Users/michael/testdir')
>>> os.path.split('/Users/michael/testdir/file.txt') #對路徑進(jìn)行拆分芜茵,最后一部分總是最后級別的目錄或文件叙量。
('/Users/michael/testdir', 'file.txt')
>>> os.path.splitext('/path/to/file.txt') #可以讓你得到文件的后綴名
('/path/to/file', '.txt')
# 對文件重命名:將txt文件重命名為py文件
>>> os.rename('test.txt', 'test.py')
# 刪掉文件:
>>> os.remove('test.py')
復(fù)制文件的函數(shù)居然在os模塊中不存在!原因是復(fù)制文件并非由操作系統(tǒng)提供的系統(tǒng)調(diào)用九串。理論上講绞佩,我們通過上一節(jié)的讀寫文件可以完成文件復(fù)制,只不過要多寫很多代碼猪钮。幸運(yùn)的是shutil模塊提供了copyfile()的函數(shù)品山,你還可以在shutil模塊中找到很多實(shí)用函數(shù),它們可以看做是os模塊的補(bǔ)充烤低。關(guān)于shutil模塊可以參考月與燈依舊
>>> [x for x in os.listdir('.') if os.path.isdir(x)] #只列出當(dāng)前目錄下的所有目錄肘交,不輸出文件。
['.lein', '.local', '.m2', '.npm', '.ssh', '.Trash', '.vim', 'Adlm', 'Applications', 'Desktop', ...]