操作檔案和目錄的函式一部分放在os模組中,一部分放在os.path模組中
檢視當前目錄的絕對路徑: >>> os.path.abspath('.')
在某個目錄下建立乙個新目錄, 首先把新目錄的完整路徑表示出來:
>>> os.path.join('e:\\dir0', 'testdir')
'e:\\dir0\\testdir'
把兩個路徑合成乙個時,不要直接拼字串,而要通過os.path.join()函式,這樣可以正確處理不同作業系統的路徑分隔符
要拆分路徑時,也不要直接去拆字串,而要通過os.path.split()函式,這樣可以把乙個路徑拆分為兩部分,後一部分總是最後級別的目錄或檔名: >>> os.path.split('e:\\dir0\\testdir\\test.txt') ('e:\\dir0\\testdir', 'test.txt')
os.path.splitext()可以直接讓你得到副檔名,很多時候非常方便: >>> os.path.splitext('/path/to/file.txt') ('/path/to/file', '.txt')
然後建立乙個目錄:
>>> os.mkdir('e:\\dir0\\testdir')
刪掉乙個目錄:
m >>> os.rmdir('e:\\dir0\\testdir')
這些合併、拆分路徑的函式並不要求目錄和檔案要真實存在,它們只對字串進行操作。
檔案操作使用下面的函式。假定當前目錄下有乙個test.txt檔案:
對檔案重新命名:
>>> os.rename('test.txt', 'test.py')
刪掉檔案:
>>> os.remove('test.py')
如何利用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']
相對路徑轉絕對路徑
import os
print(os.path.abspath('.'))#當前路徑的絕對路徑
在某個目錄下建立新目錄
os.mkdir('dir1')#(1)相對路徑建立目錄
#os.mkdir('dir2\\dir3')#(2)相對路徑 同時建立多級目錄 error
os.mkdir('dir1\\dir2')
#選擇乙個資料夾,如day10
#要求:在day10下建立乙個我資料夾day10copy
# 將day10下所有檔案(同時不包含.py檔案)及目錄結構,拷貝到day10copy下
import os
def my_copy_dir(ori_path, target_path, exclude_pre=['.py']):
#從 源目錄 拷貝到 目標目錄, 結構相同
if os.path.isfile(ori_path):#如果是檔案
if os.path.splitext(ori_path)[1] not in exclude_pre:#過濾掉.py檔案
#複製檔案
with open(ori_path, 'rb') as f:
cntent_byte = f.read()
with open(target_path, 'wb' as f:
f.write(content_byte)
else:#如果是目錄
#需要建立複製的目錄,如果還未被建立需要建立
if not os.path.isdir(target_path):
os.mkdir(target_path)
#遍歷當前目錄下的檔案及資料夾,使用 遞迴方式
for x in os.listdir(ori_path):
ori_path_next = os.path.join(ori_path, x)#拼接完整路徑
#去掉複製目錄
if ori_path_next == target_path:
continue
target_path_next == os.path.join(target_path, x)
my_copy_dir(ori_path_next, target_path_next)#遞迴
#測試if __name__=='__main__':
path1 = r'.'
path2 = r'.\day10copy'
my_copy_dir(path1, path2)
Python io 讀取檔案
python io 讀取檔案 1.open 使用open開啟檔案後一定要記得呼叫檔案物件的close 方法。比如可以用try finally語句來確保最後能關閉檔案。file object open thefile.txt try all the text file object.read fina...
python IO 檔案讀寫
io 由於cpu和記憶體的速度遠遠高於外設的速度,所以,在io程式設計中,就存在速度嚴重不匹配的問題。如要把100m的資料寫入磁碟,cpu輸出100m的資料只需要0.01秒,可是磁碟要接收這100m資料可能需要10秒,怎麼辦呢?有兩種辦法 第一種是cpu等著,也就是程式暫停執行後續 等100m的資料...
python IO程式設計,檔案讀寫
函式 open name mode buffering 引數 返回 乙個檔案物件 例項 mode引數 r 唯讀。w 寫,原內容被替換。a 在原內容後追加內容。buffering引數 無緩衝,直接將資料寫到硬碟上。有緩衝,資料先寫到記憶體裡,只有使用flush函式或者close函式才會將資料更新到硬碟...