这看起来很简单,但我不知道出了什么问题。首先,我收集了目录中所有文件名的列表,这些文件名与特定字符串相匹配:import osimport globdl = glob.glob('dir/*abc*')for f in dl: fn = os.path.basename(f)所以现在我有一个文件名列表fn,其中包含"abc". 到目前为止一切都很好。我想要做的是遍历这个文件名列表,尝试将它们与字典中的一组键进行匹配,并在有匹配项的地方打印出该匹配键的相应字典值。这是我所做的:fn_dict = {"abc.txt": "val1", "abc123.txt": "val2", "def.txt": "val3"}for i in fn: if i in fn_dict.keys(): print(fn_dict.get(i)) else: print("No match")我希望能回来"val1","val2"但我只是一遍"No match"又一遍。
2 回答
BIG阳
TA贡献1859条经验 获得超6个赞
fn应该是一个列表,否则它将是一个字符串和字典部分,你将循环通过单个文件名而不是目录中与模式匹配的所有文件名
import os
import glob
dl = glob.glob('dir/*abc*')
fn = []
for f in dl:
fn.append(os.path.basename(f))
或使用列表理解
fn = [os.path.basename(f) for f in dl]
繁星点点滴滴
TA贡献1803条经验 获得超3个赞
在你的for循环中你重新分配你的fn变量
for f in dl:
fn = os.path.basename(f) # fn is string now, not a list
然后在你的第二个for循环中你遍历fn变量,它是一个字符串,所以创建一个数组并添加os.path.basename(i)到其中
fn = []
for f in dl:
fn.append(os.path.basename(f))
添加回答
举报
0/150
提交
取消