我想把一个文件夹中的文件名爬出来,然后这样写的,报错,为什么:
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)
不知道你这个问题是否已经解决, 如果还没有解决的话: