Python是一門高級編程語言,靈活、易學、適合快速開發。在Python中,遍歷文件是非常常見的操作,無論是找到特定的文件,還是讀取文件內容等,都需要遍歷文件。本文將從多個角度來詳細講解Python遍歷文件的方法和技巧。
一、Python遍歷文件夾下所有文件
當需要對某個文件夾下的所有文件進行處理時,Python提供了os和os.path模塊來實現文件遍歷的功能。os.listdir()函數能夠獲取指定路徑下的所有文件和文件夾,使用os.path.join()函數可以拼接路徑和文件名,得到一個完整的文件路徑。下面是示例代碼:
import os def traverse_folder(folder_path): # 獲取文件夾下所有文件和文件夾 file_list = os.listdir(folder_path) for file in file_list: file_path = os.path.join(folder_path, file) if os.path.isdir(file_path): # 如果是文件夾,遞歸遍歷 traverse_folder(file_path) else: # 如果是文件,進行處理 print(file_path)
二、Python遍歷固定後綴文件
當需要遍歷某個文件夾下特定後綴的文件時,可以利用glob模塊的glob()函數來實現。glob()函數可以匹配指定模式的文件名,返回符合條件的文件名列表。下面是示例代碼:
import glob def traverse_folder_with_suffix(folder_path, suffix): pattern = os.path.join(folder_path, '*.' + suffix) file_list = glob.glob(pattern) for file_path in file_list: print(file_path)
三、Python遍歷文件每一行
在Python中,可以使用readline()方法按行讀取文件內容。配合循環使用,就能夠遍歷整個文件內容,對每一行進行處理。下面是示例代碼:
def traverse_file_by_line(file_path): with open(file_path, 'r') as f: # 按行讀取文件內容 for line in f.readlines(): # 處理每一行內容 print(line)
四、Python遍歷文件夾下所有文件名
如果只需要獲取文件名而不需要打開讀取文件內容,可以使用os.walk()方法。os.walk()方法可以遍歷文件夾及其子文件夾下所有文件,返回的是一個元組,元組包含三個值:路徑、子文件夾、文件。下面是示例代碼:
def traverse_folder_get_file_names(folder_path): for root, dirs, files in os.walk(folder_path): for file in files: print(file)
五、Python遍歷文件內容
到了這裡,我們已經掌握了如何遍歷文件夾和文件,如何按行讀取文件內容,下面我們進一步學習如何讀取文件的內容。打開文件後,使用read()方法,就能夠讀取整個文件的內容。下面是示例代碼:
def traverse_file_get_content(file_path): with open(file_path, 'r') as f: # 讀取文件內容 content = f.read() # 處理文件內容 print(content)
六、Python遍歷文件夾下的圖片
在遍歷文件夾時,經常需要找到指定類型的文件,比如圖片。Python中有Pillow模塊可以操作圖像,可以使用os.path.splitext()函數獲取文件後綴,再利用Pillow模塊判斷文件是否為圖片,並進行處理。下面是示例代碼:
from PIL import Image def traverse_folder_get_images(folder_path): for root, dirs, files in os.walk(folder_path): for file in files: file_path = os.path.join(root, file) # 獲取文件後綴,判斷是否為圖片 if os.path.splitext(file_path)[1].lower() in ('.jpg', '.jpeg', '.png', '.bmp'): # 處理圖片 with Image.open(file_path) as img: # 獲取圖片信息 print(img.format, img.size, img.mode)
七、Python遍歷文件內容的第一行
在某些場景下,只需要獲取文件的第一行內容,可以使用readline()方法或者使用迭代器遍歷文件內容,獲取第一行後退出循環。下面是示例代碼:
def traverse_file_get_first_line(file_path): with open(file_path, 'r') as f: # 獲取第一行內容 first_line = f.readline() # 處理第一行內容 print(first_line)
八、Python遍歷文件夾
除了使用os.walk()方法遍歷文件夾,還可以使用os.listdir()方法和os.path.isdir()函數遞歸遍歷文件夾。下面是示例代碼:
def traverse_folder_recursive(folder_path, indent=0): for item in os.listdir(folder_path): item_path = os.path.join(folder_path, item) if os.path.isdir(item_path): print(' ' * indent + item + '/') traverse_folder_recursive(item_path, indent + 4) else: print(' ' * indent + item)
九、Python遍歷文件對象
在某些場景下,需要對文件內容進行更加精細的操作,可以使用Python中的file對象來實現。file對象提供了眾多操作文件的方法,如read()、write()、seek()等。下面是示例代碼:
def traverse_file_with_file_object(file_path): with open(file_path, 'r') as f: # 使用file對象讀取文件內容 while True: line = f.readline() if not line: break # 處理每一行內容 print(line.strip())
十、Python遍歷文件改名
如果需要對文件進行重命名,可以使用os模塊提供的rename()方法實現。rename()方法需要傳入兩個參數,第一個參數是原文件名,第二個參數是新文件名。下面是示例代碼:
def traverse_folder_rename(folder_path, old_suffix, new_suffix): for root, dirs, files in os.walk(folder_path): for file in files: old_file_path = os.path.join(root, file) # 獲取原文件名後綴 if os.path.splitext(old_file_path)[1].lower() == '.' + old_suffix: # 構造新文件名 new_file_path = os.path.join(root, os.path.splitext(file)[0] + '.' + new_suffix) # 文件重命名 os.rename(old_file_path, new_file_path)
以上就是Python遍歷文件的相關知識點和方法。從這些方法中,我們可以看到Python的強大和靈活,能夠處理各種文件和數據。希望這篇文章對您有幫助。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/288850.html