gpt4 book ai didi

python - os.walk() 结果类型

转载 作者:行者123 更新时间:2023-12-01 05:47:06 25 4
gpt4 key购买 nike

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com