python獲取文件夾下所有文件的名稱怎么操作
python獲取文件(jian)夾下所有文件(jian)的名稱怎么操(cao)作
推薦答案
在Python中,要獲取文(wen)件(jian)(jian)夾下所有文(wen)件(jian)(jian)的名稱,您(nin)可以(yi)使用os.listdir函(han)數和遞歸函(han)數。這種(zhong)方法非常靈活,允(yun)許(xu)您(nin)在獲取文(wen)件(jian)(jian)名的同時進行其他(ta)操作,如(ru)篩選或排除(chu)特定文(wen)件(jian)(jian)。
首先,導入os模塊(kuai):
import os
然后(hou),編寫一個遞歸函數來(lai)獲取文(wen)件(jian)夾(jia)下(xia)所有文(wen)件(jian)的名稱:
def get_all_file_names(folder_path):
file_names = [] # 用于存儲文件名稱的列表
# 獲取文件夾中所有項(包括文件和子文件夾)
items = os.listdir(folder_path)
for item in items:
item_path = os.path.join(folder_path, item)
if os.path.isfile(item_path):
# 如果是文件,將其名稱添加到file_names列表
file_names.append(item)
elif os.path.isdir(item_path):
# 如果是文件夾,遞歸調用函數
file_names.extend(get_all_file_names(item_path))
return file_names
folder_path = '/path/to/your/folder' # 替換為您的文件夾路徑
file_names = get_all_file_names(folder_path)
# 現在,file_names列表包含了文件夾下所有文件的名稱
在(zai)上述代(dai)碼中(zhong),我們定義(yi)了一個(ge)名為(wei)get_all_file_names的(de)遞歸(gui)函數,它接受一個(ge)文(wen)(wen)件(jian)(jian)夾路(lu)徑作為(wei)參數,并返(fan)回該文(wen)(wen)件(jian)(jian)夾及其子文(wen)(wen)件(jian)(jian)夾中(zhong)所有(you)文(wen)(wen)件(jian)(jian)的(de)名稱。函數首先使用(yong)(yong)os.listdir獲取文(wen)(wen)件(jian)(jian)夾中(zhong)的(de)所有(you)項,然后遍歷這(zhe)些項。如(ru)果某個(ge)項是文(wen)(wen)件(jian)(jian),則將其名稱添加到file_names列(lie)表中(zhong);如(ru)果是文(wen)(wen)件(jian)(jian)夾,則遞歸(gui)調用(yong)(yong)函數以處理子文(wen)(wen)件(jian)(jian)夾。
最終(zhong),file_names列表將包(bao)含指定文(wen)件夾下所(suo)有文(wen)件的(de)名稱。
這種(zhong)方法非常靈活,您可(ke)以根據(ju)需要在(zai)遞歸函(han)數中添(tian)加其(qi)他邏(luo)輯,例如文(wen)件(jian)名篩選或排除特(te)定文(wen)件(jian)。
其他答案
-
使用os.walk函數。os.walk會遍歷(li)指定文件(jian)夾(jia)及其所有子文件(jian)夾(jia),返回每個文件(jian)的路徑。
首先(xian),您需要導(dao)入os模塊(kuai):
import os
接下來,使用os.walk函數遍歷文(wen)件夾并獲取(qu)文(wen)件名稱(cheng):
folder_path = '/path/to/your/folder' # 替換(huan)為您的文件夾(jia)路徑
file_names = [] # 用于存(cun)儲(chu)文件名稱(cheng)的列表(biao)
for foldername, subfolders, filenames in os.walk(folder_path):
for filename in filenames:
file_names.append(filename)
# 現(xian)在(zai),file_names列(lie)表包含了(le)文件夾下所有(you)文件的名稱(cheng)
上(shang)述(shu)代碼中(zhong),folder_path是您要遍歷(li)的文(wen)件夾(jia)路徑(jing)(jing)。os.walk函數返(fan)回一個生成器,在每(mei)(mei)次迭代中(zhong),它會返(fan)回一個包含(han)當(dang)前文(wen)件夾(jia)路徑(jing)(jing)、子(zi)文(wen)件夾(jia)列表(biao)和文(wen)件名(ming)列表(biao)的元組。我們遍歷(li)文(wen)件名(ming)列表(biao),并將每(mei)(mei)個文(wen)件名(ming)添加到file_names列表(biao)中(zhong)。
最終,file_names列表將包含指定文件(jian)夾下所有文件(jian)的名稱。
這種方法簡單而有效,適用于大多數文件和文件夾操作需求。
-
Python的glob模(mo)塊提(ti)供了一種簡單(dan)且強(qiang)大的方(fang)法(fa)來獲取文件(jian)夾下所有文件(jian)的名稱,同(tong)時可以方(fang)便地進行文件(jian)名匹配。
首先,導入glob模塊(kuai):
import glob
然(ran)后,使用glob.glob函(han)數(shu)來獲(huo)取(qu)文件夾下所(suo)有文件的名稱:
folder_path = '/path/to/your/folder' # 替換為您的(de)文件(jian)夾路(lu)徑
file_pattern = os.path.join(folder_path, '*') # 匹配所有文件(jian)
file_names = [os.path.basename(file) for file in glob.glob(file_pattern)]
# 現在,file_names列表包(bao)含(han)了(le)文件(jian)夾(jia)下(xia)所有文件(jian)的名稱
在上(shang)述代碼中,我們(men)首先(xian)使用(yong)os.path.join構(gou)建一個(ge)通配(pei)符模(mo)式(shi),該模(mo)式(shi)匹配(pei)指定文(wen)件夾下的所有文(wen)件。然后,使用(yong)glob.glob函(han)數獲(huo)取匹配(pei)的文(wen)件路徑,并使用(yong)os.path.basename函(han)數提(ti)取每個(ge)文(wen)件的名(ming)稱(cheng)。
這種方(fang)法非常簡(jian)單,適(shi)用于(yu)需(xu)要獲取文件夾下(xia)所有文件名(ming)稱的(de)情況(kuang),并(bing)且可(ke)以(yi)方(fang)便地根(gen)據需(xu)要修改文件名(ming)匹配模式。例如,您可(ke)以(yi)使用*.txt來(lai)只獲取文本文件的(de)名(ming)稱,或使用其他匹配模式以(yi)滿足您的(de)需(xu)求。
總之,以(yi)上三種方(fang)(fang)法都可以(yi)用于(yu)獲取(qu)文(wen)件(jian)夾下(xia)所有文(wen)件(jian)的名稱。選擇(ze)哪種方(fang)(fang)法取(qu)決于(yu)您的需(xu)求和(he)偏好。os.walk適(shi)用于(yu)遍歷包括子文(wen)件(jian)夾在內的所有文(wen)件(jian),適(shi)用于(yu)大(da)規(gui)模(mo)(mo)的文(wen)件(jian)夾結構。os.listdir和(he)遞歸函數更加(jia)靈活,可以(yi)根據需(xu)要添(tian)加(jia)自定義邏輯。glob模(mo)(mo)塊(kuai)則提供了簡(jian)單的文(wen)件(jian)名匹配功能,適(shi)用于(yu)特(te)定文(wen)件(jian)類型的查找。根據具體情(qing)況,選擇(ze)最(zui)合(he)適(shi)的方(fang)(fang)法來獲取(qu)文(wen)件(jian)夾下(xia)所有文(wen)件(jian)的名稱。
