一. 簡介
前面文章簡單學習了 Python3 中 OS模塊中的文件/目錄的部分函數。
本文繼續來學習 OS 模塊中文件、目錄的操作方法:os.walk() 方法、os.write()方法
二. Python3 OS模塊中的文件/目錄方法
1. os.walk() 方法
os.walk() 方法用于生成目錄樹中的文件名,通過遍歷目錄及其子目錄遞歸地生成文件名,os.walk() 方法是一個生成器,每次產生一個三元組 (dirpath, dirnames, filenames)。該方法
是一個簡單易用的文件、目錄遍歷器,可以幫助我們高效的處理文件、目錄方面的事情。
walk()方法語法格式如下:
os.walk(top, topdown=True, onerror=None, followlinks=False)
參數:
top
: 需要遍歷的根目錄路徑。topdown
: 可選參數,默認為True
。如果設置為True
,則先于其子目錄返回目錄信息;如果設置為False
,則在處理完所有子目錄后才返回目錄信息。onerror
: 可選參數,是一個接收異常作為唯一參數的函數。當os.walk()
遇到問題(例如權限錯誤)時會調用此函數。默認情況下,遇到錯誤時會忽略它們。followlinks
: 可選參數,默認為False
。如果設置為True
,os.walk()
將跟隨符號鏈接指向的目錄。注意,這可能會導致無限循環,如果存在循環鏈接的話。
返回值:
每次產生一個三元組 (dirpath, dirnames, filenames):
??? dirpath: 字符串形式的路徑,表示當前遍歷的目錄。
??? dirnames: 保存當前目錄下所有子目錄名稱(不含路徑)的列表。
??? filenames: 保存當前目錄下所有非目錄文件名稱(不含路徑)的列表。
示例如下:
#!/usr/bin/python3import osfor str_cur_path, dirs, files in os.walk(".", topdown=True):for file_name in files:#拼接路徑print(os.path.join(str_cur_path, file_name))for dir_name in dirs:print(os.path.join(str_cur_path, dir_name))
運行后結果如下:
2.? os.write() 方法
os.write() 方法用于寫入字符串到文件中,返回實際寫入的字符串長度。通過文件描述符進行操作。文件描述符是一個由操作系統提供的抽象,代表了打開的文件、管道或其他I/O資源。
write()方法語法格式如下:
os.write(fd, data)
參數:fd -- 文件描述符。str -- 寫入的字符串。
返回值: 返回實際寫入的字符串長度。
示例如下:
#!/usr/bin/python3import os,syspath = "./test.txt"
info = "wonderful"fd = os.open(path, os.O_RDWR|os.O_CREAT)
#向文件中寫入數據
data_len = os.write(fd, bytes(info, 'utf-8'))
print("write data_len:", data_len)
os.close(fd)
#讀取文件的內容
r_fd = os.open(path, os.O_RDONLY)
read_data = os.read(r_fd, 60)
print(f"read bytes: {read_data.decode()}")
os.close(fd)
運行結果如下: