python - os.walk() 结果类型

标签 python tuples os.walk

我有一个包含数千个文件的文件夹。我需要将每个文件的文件名与另一个数组中的列进行匹配。

import os

filenames = []
for files in os.walk("Directory"):
    filenames.append(files)

我现在有目录中每个文件名的元组。我现在想要的是拼接元组的每个元素,并将其添加到一个新数组中。我的代码看起来与此类似:

files = []
for i in filenames:
    files.append(i[2:7])

我收到错误“AttributeError:‘tuple’对象没有属性‘append’。” 在这里搜索之后,我尝试了其他命令,例如 join。我尝试将文件名转换为列表。

即使我说这样的话:

filenames[0]

期望仅获得第一个字符串结果,它返回整个文件名数组。有什么办法可以解决这个问题吗?

感谢您的帮助。

最佳答案

os.walk 返回一个 3 元组:root、dirs、files

文档 here

您可以使用列表推导式来实现基于文件名的拆分。

filenames = reduce(lambda x,y: x+y, [files for root, dirs, files in os.walk('.')])
files = [name[2:7] for name in filenames]

解释如下: Lambda 函数是匿名函数。您不返回任何东西。定义包含返回的表达式。这对于处理动态生成的数据非常强大。

reduce() 又名“工作函数”接受两个参数。使用列表的前两个元素调用该函数,然后使用这些元素的结果、第三个元素,依此类推。返回值是单个列表

网上有大量关于此的文档。

关于python - os.walk() 结果类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15715152/

相关文章:

python - 按第二项(整数值)对元组列表进行排序

c++ - 从另一个元组类型的嵌套类型派生元组类型

python - 元组有什么用?

python - “元组”对象没有属性 'replace'

具有haversine距离的python sklearn KDTree

python - 当用户提供某个关键字作为输入时结束函数

python - 使用生成器表达式加载选项字典

python - 使用 os.walk() 时如何排除目录?其他方法没有效果

python - 让 os.walk 以非标准方式工作

php - 如何以 www-data 用户身份终止进程