1、概覽
os模組可以直接呼叫作業系統提供的介面函式。幫助我們在python程式中對目錄和檔案進行操作。
操作檔案和目錄的函式一部分放在
os模組中,一部分放在
os.path
模組中 但是複製檔案的函式居然在os模組中不存在,原因是複製檔案並非由作業系統提供的系統呼叫。不過shutil模組提供了copyfile()的函式,你還可以在shutil模組中找到很多實用函式,它們可以看做是os模組的補充。
1、基本功能
>>> import os
>>> os.name
# 作業系統型別
'posix'
如果是posix,說明系統是linux、unix或mac os x,如果是nt,就是windows系統。
要獲取詳細的系統資訊,可以呼叫uname()函式
2、環境變數
作業系統中定義的環境變數,全部儲存在os.environ這個變數中,可以直接檢視
>>> os.environ
要獲取某個環境變數的值,可以呼叫os.environ.get('key')
>>> os.environ.get('path')
'/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/x11/bin:/usr/local/mysql/bin'
>>> os.environ.get('x', 'default')
'default'
3、操作目錄
# 檢視當前目錄的絕對路徑:
>>> os.path.abspath('.')
'/users/michael'
# 在某個目錄下建立乙個新目錄,首先把新目錄的完整路徑表示出來:
# 把兩個路徑合成乙個時,不要直接拼字串,而要通過os.path.join()函式
# 這樣可以正確處理不同作業系統的路徑分隔符。
>>> os.path.join('/users/michael', 'testdir')
'/users/michael/testdir'
# 然後建立乙個目錄:
>>> os.mkdir('/users/michael/testdir')
# 刪掉乙個目錄:
>>> os.rmdir('/users/michael/testdir')
4、對路徑
的操作 # 拆分路徑,os.path.split()函式
>>> os.path.split('/users/michael/testdir/file.txt')
('/users/michael/testdir', 'file.txt')
# 後一部分總是最後級別的目錄或檔名
# 得到副檔名,os.path.splitext()
>>> os.path.splitext('/path/to/file.txt')
('/path/to/file', '.txt')
5、操作檔案
# 對檔案重新命名:
>>> os.rename('test.txt', 'test.py')
# 刪掉檔案:
>>> os.remove('test.py')
6、利用python的特性過濾檔案
# 列出當前目錄下的所有目錄
>>> [x for x in os.listdir('.') if os.path.isdir(x)]
# 遍歷所有目錄
# 列出所有的
.py檔案
>>> [x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1]=='.py']
2、例子
1、利用
os模組編寫乙個能實現
dir -l
輸出的程式。
import os,time
currentdir = os.getcwd() #獲取路徑
filenum, filesize, dirnum = 0, 0, 0 #初始計量
for name in os.listdir(currentdir):
if os.path.isfile(name): #判斷檔案是否存在
print('%s\t\t%d\t%s' % (time.strftime('%y/%m/%d %h:%m', time.localtime(os.path.getmtime(name))), os.path.getsize(name), name)) #列印檔案的時間,大小,名字
filenum += 1 #檔案數量+1
filesize += os.path.getsize(name) # 檔案大小累加
elif os.path.isdir(name): #判斷目錄是否存在
print('%s\t\t\t%s' % (time.strftime('%y/%m/%d %h:%m', time.localtime(os.path.getmtime(name))), name)) #列印目錄的時間,名字
dirnum += 1 #目錄數量+1
print('\t\t%d個檔案\t\t%d 位元組' % (filenum, filesize))
print('\t\t%d個目錄' % dirnum)
2、編寫乙個程式,能在當前目錄以及當前目錄的所有子目錄下查詢檔案名包含指定字串的檔案,並列印出相對路徑。
import os
def search(dststr, path=['.']):
#用相對路徑
for n in path:
dirlist = [x for x in os.listdir(n) if os.path.isdir(os.path.join(n, x))]
#找出子目錄名
filelist = [x for x in os.listdir(n) if os.path.isfile(os.path.join(n, x)) and dststr in os.path.splitext(x)[0]]
#找出含關鍵字的檔名
if len(filelist) > 0:
print(n, ':')
for m in filelist:
print(m)
print('\n')
path = [os.path.join(n, x) for x in dirlist]
search(dststr, path)
return 'done'
dststr = '2'
search(dststr)
python學習筆記 day9(3)
open file,mode r buffering 1,encoding none,newline none,closefd true,opener none 引數說明 file物件使用 open 函式來建立,下面是其他常用函式 方法描述 file.close 關閉檔案,關閉後檔案不能進行讀寫操作...
Python學習筆記第3章 操作列表 1
一 遍歷整個列表 我們經常需要遍歷列表的所有元素,為了避免大量的重複 這裡我麼使用for迴圈來解決這些問題。實現 name chenchen weipeng jiangnan suqin for person in name print person 執行結果如下 chenchen weipeng ...
Python學習筆記 第六章 檔案操作
在磁碟上讀寫檔案的功能都是由作業系統提供的,現代作業系統不允許普通的程式直接操作磁碟,所以,讀寫檔案就是請求作業系統開啟乙個檔案物件 通常稱為檔案描述符 然後,通過作業系統提供的介面從這個檔案物件中讀取資料 讀檔案 或者把資料寫入這個檔案物件 寫檔案 要以讀檔案的模式開啟乙個檔案物件,使用pytho...