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