簡體   English   中英

Python 中的 os.walk 返回一個空列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM