[英]os.walk in Python is returning an empty list
我正在嘗試使用os.walk
從目錄返回一個 .xlsx 文件列表,但它返回一個空列表。
import os
import pathlib
working_directory = 'N:/files path'
def find_filenames(path, suffix):
# First save all filenames in a list: file_list:
file_list = []
# Gets a list of all validation xlsx files in the folder:
for subdir, dirs, files in os.walk(path):
for file in files:
if file.endswith(suffix):
# save filesnames in file_list:
file_list.append(file)
return file_list
print(find_filenames(pathlib.Path(working_directory), '.xlsx')
它正在打印:
[]
什么時候應該是這樣的:
我錯過了什么或做錯了什么? 謝謝!
應該是:
import os
import pathlib
working_directory = 'N:/files path'
def find_filenames(path, suffix):
# First save all filenames in a list: file_list:
file_list = []
# Gets a list of all validation xlsx files in the folder:
for subdir, dirs, files in os.walk(path):
for file in files:
if file.endswith(suffix):
# save filesnames in file_list:
file_list.append(file)
return file_list
問題是你把return
放錯了地方。 如果您在問題中輸入類似代碼並且第一個文件不是以.xlsx
結尾,它將直接返回[]
!
雖然上述答案是正確的並且是最簡單的解決方法,但我想推薦一個建議。 您正在導入pathlib
,它已經內置了遞歸glob
。 因此,如果您的期望是路徑 object 的路徑,則可以簡化代碼:
import pathlib
working_directory = 'N:/files path'
def find_filenames(path: pathlib.Path, suffix: str):
return list(path.rglob('*'+suffix))
print(find_filenames(pathlib.Path(working_directory), '.xlsx'))
rglob
方法將在這里進行遞歸通配,此外,您不需要為這段代碼導入os
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.