我想把一个文件夹中的文件名爬出来,然后这样写的,报错,为什么:

我想把一个文件夹中的文件名爬出来,然后这样写的,报错,为什么:

import os

# 遍历文件夹中的文件
path = r"D:\各种模\选股结果"
file_list = []

for i in os.walk ( path ):
    if i.endswith('.txt'):

        file_list.append ( i )
    print ( file_list )

提示这样
C:\Users\大无畏\AppData\Local\Programs\Python\Python36\python.exe "D:/Program Files/JetBrains/PyCharm 2020.2/jbr/bin/D:/PycharmProjects/pythonProject7/get.py"
Traceback (most recent call last):
File "D:/Program Files/JetBrains/PyCharm 2020.2/jbr/bin/D:/PycharmProjects/pythonProject7/get.py", line 8, in
if i.endswith('.txt'):
AttributeError: 'tuple' object has no attribute 'endswith'

Process finished with exit code 1

os.walk方法可以生成一个指定初始边界的迭代器,用于遍历指定目录下的文件和文件夹,若不指定结束边界,则默认自上而下地遍历从给定目录下的所有目录并读取文件名。由于os.walk生成迭代器,所以可以用next()方法取值。os.walk迭代器不能作为for循环的循环主体,所以报错如上。
可以做出如下修改:

import os
path = r"D:\各种模\选股结果"
file_list = []
tp = next(os.walk(path))
for i in tp[2]:
    if i.endswith('.txt'):
        file_list.append(i)
print(file_list)
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^