1.os.walk
- 回傳指定路徑下所有檔案和子檔案夾中所有檔案串列
- 其中檔案夾下路徑如下:

import os
def file_name_walk(file_dir):
for root, dirs, files in os.walk(file_dir):
print("root", root) # 當前目錄路徑
print("dirs", dirs) # 當前路徑下所有子目錄
print("files", files) # 當前路徑下所有非目錄子檔案
file_name_walk("./")
# root ./
# dirs ['test']
# files ['200-2000(1).txt', '200-2000(2).txt', '200-2000(3).txt', 'getFileName.py']
# root ./test
# dirs []
# files ['test.txt']
- 對于os.walk會遍歷指定目錄下的所有子檔案夾和子檔案夾中的所有檔案,例如此處的root檔案夾中有test檔案夾和'200-2000(1).txt', '200-2000(2).txt', '200-2000(3).txt', 'getFileName.py'等檔案
- 然后遍歷子檔案夾test,發現其中并沒有子檔案夾,所以dirs=[],但是子檔案夾test中有文本檔案test.txt.所以有['test.txt']的值
2.os.listdir()
回傳指定路徑下所有的檔案和檔案夾串列,但是子目錄下檔案不遍歷,
def file_name_listdir(file_dir):
for files in os.listdir(file_dir): # 不僅僅是檔案,當前目錄下的檔案夾也會被認為遍歷到
print("files", files)
file_name_listdir("./")
# files 200-2000(1).txt
# files 200-2000(2).txt
# files 200-2000(3).txt
# files getFileName.py
# files test
注意:使用os.listdir函式不僅是檔案,檔案夾也會被遍歷到,例如test即是一個檔案夾,
3.全域變數保存
如果想要保存檔案名可以使用全域變數或者區域變數進行保存,
如果使用全域變數,則每次呼叫函式的資訊都存在全域串列中
Files_Global = []
def file_name_listdir_global(file_dir):
for files in os.listdir(file_dir):
Files_Global.append(files)
file_name_listdir_global(".")
file_name_listdir_global("./test")
# 最終的結果都會被保存到全域串列變數中
print("Files_Global: ", Files_Global)
# Files_Global: ['200-2000(1).txt', '200-2000(2).txt', '200-2000(3).txt', 'getFileName.py', 'test', 'test.txt']
此處使用os.listdir函式將遍歷得到的結果都保存到全域變數Files_Global中,則其中包含了遍歷"."當前檔案夾和"./test"當前檔案夾中的test檔案夾中的所有資訊
4.區域變數和函式回傳
區域變數,只保存本次函式呼叫得到的結果,通過回傳值保存
建議使用區域變數加回傳值的方式
'''
學習中遇到問題沒人解答?小編創建了一個Python學習交流群:711312441
尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書!
'''
def file_name_listdir_local(file_dir):
files_local = []
for files in os.listdir(file_dir):
files_local.append(files)
return files_local
file_local_1 = file_name_listdir_local(".")
file_local_2 = file_name_listdir_local("./test")
print("file_local_1:", file_local_1) # 當前目錄下檔案
print("file_local_2", file_local_2) # 子目錄test下檔案
# file_local_1: ['200-2000(1).txt', '200-2000(2).txt', '200-2000(3).txt', 'getFileName.py', 'test']
# file_local_2 ['test.txt']
5.通過os.path.splitext指定檔案型別
選取特定檔案型別
選取檔案名中所有txt后綴名的文本檔案
def file_name(file_dir):
File_Name=[]
for files in os.listdir(file_dir):
if os.path.splitext(files)[1] == '.txt':
File_Name.append(files)
return File_Name
txt_file_name=file_name(".")
print("txt_file_name",txt_file_name)
# txt_file_name ['200-2000(1).txt', '200-2000(2).txt', '200-2000(3).txt']
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/514277.html
標籤:Python
上一篇:python煙花代碼
