python-3.x - 返回所有parts.txt文件的路径列表
问题描述
使用 os 模块的 walk 生成器编写一个list_files_walk
返回所有文件路径列表的函数。parts.txt
该函数不接受输入参数。
def list_filess_walk():
for dirpath, dirnames, filenames in os.walk("CarItems"):
if 'parts.txt' in dirpath:
list_files.append(filenames)
print(list_files)
return list_files
目前,list_files
还是空的。输出应该与此类似:
CarItems/Chevrolet/Chevelle/2011/parts.txt
CarItems/Chevrolet/Chevelle/1982/parts.txt
我怎样才能产生这个输出?
解决方案
您在这里几乎拥有它-我要做的唯一调整是:
- 确保
list_files
在函数的本地范围内避免副作用。 - 使用参数,使函数可以在任意路径上工作。
- 返回一个带有
yield
允许延迟获取下一个文件的关键字的生成器。 'parts.txt' in dirpath
如果文件名恰好是路径中其他地方的子字符串,则可能容易出错。我会使用endswith
或迭代元组中的第二个项目,os.walk
它是当前目录中所有项目的列表,例如'parts.txt' in dirnames
.- 按照与上述相同的思路,您可能希望确保您的目标是一个带有
os.path.isfile
.
这是一个例子:
import os
def find_files_rec(path, fname):
for dirpath, dirnames, files in os.walk(path):
if fname in files:
yield f"{dirpath}/{fname}"
if __name__ == "__main__":
print(list(find_files_rec(".", "parts.txt")))
推荐阅读
- python - 如何对特征矩阵进行行归一化?广播错误
- python - Django mysql数据库在模板问题的for循环中显示来自多个表的数据
- azure - Azure Function On-Prem 在断开连接模式下运行
- android - 在本机反应中,键盘在文本输入中键入的每个字符都会消失
- go - Go 的堆栈拆分还是堆栈复制?
- php - Laravel Sail - SQLSTATE[HY000] [2002] 没有这样的文件或目录
- c# - 如何在 C# 中加载 caffe 模型
- python - LSTM 输出扁线
- python - 烧瓶重定向到用户的网址
- android - Android Studio 调试基本功能报错