Python 检查文件.endswith是否在扩展名列表中
我有一个or循环,循环遍历一个目录中的所有文件,我试图检查文件扩展名是否在扩展名列表中。我得到以下错误Python 检查文件.endswith是否在扩展名列表中,python,python-3.x,Python,Python 3.x,我有一个or循环,循环遍历一个目录中的所有文件,我试图检查文件扩展名是否在扩展名列表中。我得到以下错误AttributeError:“tuple”对象没有属性“endswith” DIRECTORY = os.path.dirname(os.path.realpath(__file__)) EXTENTIONS = (".xlsx", ".xlsm", ".xltx", ".xltm") files = os.walk(DIRECTORY) for file in files: if
AttributeError:“tuple”对象没有属性“endswith”
DIRECTORY = os.path.dirname(os.path.realpath(__file__))
EXTENTIONS = (".xlsx", ".xlsm", ".xltx", ".xltm")
files = os.walk(DIRECTORY)
for file in files:
if (file.endswith(EXTENTIONS)):
# Do something here
os.walk
返回由根、目录、文件组成的三元组。你只需要这里的文件
DIRECTORY = os.path.dirname(os.path.realpath(__file__))
EXTENTIONS = (".xlsx", ".xlsm", ".xltx", ".xltm")
files = os.walk(DIRECTORY)
for _, _, file in files:
if (file.endswith(EXTENTIONS)):
# Do something here
如果不需要递归遍历目录,可以在此处使用os.listdir()
。使用不正确。它产生一个三元组(目录路径、目录名、文件名)
由于您希望检查多个扩展,因此将它们全部放入集中并使用“in
”运算符检查其中的成员资格会更快,因为它使用哈希表而不是线性搜索来检查匹配项:
import os
DIRECTORY = os.path.dirname(os.path.realpath(__file__))
EXTENTIONS = {".xlsx", ".xlsm", ".xltx", ".xltm"}
for dirpath, dirnames, filenames in os.walk(DIRECTORY):
for filename in filenames:
ext = os.path.splitext(filename)[1]
if ext in EXTENTIONS:
# Do something here
恭喜!您的问题是什么?了解如何使用返回三元组的os.walk。检查文档,除非您确实想walk
子目录等。。。然后您可能想使用os.listdir(目录)
来代替。。。否则。。。您需要调整代码以遵循文档中给出的示例…您的问题是什么?请提供完整的错误消息,以及一个。