在该文件夹中,文件名为:a11.shp,a11.shx,u21.shp,u21.shx
import os
words = ('a11','u21')
for root, dirs,files in os.walk(r'C:\Users\user\Desktop\folder1'):
for i in files:
if i in words:
print(i)
TypeError:元组索引必须是整数或切片,而不是str
它需要某种索引才能使元组运行所有项目。
我想将其用作“包含”该词,在这种情况下,它不像包含in
那样工作。
在元组中给出这些确切的单词时,该怎么办?没有startswith
。
答案 0 :(得分:0)
我发现为变量选择描述性名称使代码更易于阅读。在下面检查我的示例:
import os
words = ('a11','u21')
for root, dirs, files in os.walk(r'C:\Users\user\Desktop\folder1'):
for filename in files:
for word in words:
if word in filename:
print('Match: "', word, '" is in "', file, '"', sep='')
这段代码产生了我认为您想要的结果。
答案 1 :(得分:-1)
我认为if words in i:
的(可行的)想法是if any(w in i for w in words)
,但它与子字符串(不是精确的字符串)匹配,并且速度不是很快。
您必须反过来执行此操作。测试file_without_extension in words
。
例如这样的
for i in files:
# check if the filename (without extension) is in "words" iterable
if os.path.splitext(i)[0] in words:
print(i)
如果您有很多“单词”,请使用set
而不是tuple
来进行更快的查找(words = {'a11','u21'}
)。