Python IO 檔案和目錄

2021-08-28 20:56:58 字數 2389 閱讀 9854

操作檔案和目錄的函式一部分放在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函式才會將資料更新到硬碟...