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-tw/n/288850.html
微信掃一掃
支付寶掃一掃