這看起來很簡單,但我不知道出了什么問題。首先,我收集了目錄中所有文件名的列表,這些文件名與特定字符串相匹配:import osimport globdl = glob.glob('dir/*abc*')for f in dl: fn = os.path.basename(f)所以現(xiàn)在我有一個(gè)文件名列表fn,其中包含"abc". 到目前為止一切都很好。我想要做的是遍歷這個(gè)文件名列表,嘗試將它們與字典中的一組鍵進(jìn)行匹配,并在有匹配項(xiàng)的地方打印出該匹配鍵的相應(yīng)字典值。這是我所做的: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貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
fn應(yīng)該是一個(gè)列表,否則它將是一個(gè)字符串和字典部分,你將循環(huán)通過單個(gè)文件名而不是目錄中與模式匹配的所有文件名
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]

繁星點(diǎn)點(diǎn)滴滴
TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個(gè)贊
在你的for循環(huán)中你重新分配你的fn變量
for f in dl:
fn = os.path.basename(f) # fn is string now, not a list
然后在你的第二個(gè)for循環(huán)中你遍歷fn變量,它是一個(gè)字符串,所以創(chuàng)建一個(gè)數(shù)組并添加os.path.basename(i)到其中
fn = []
for f in dl:
fn.append(os.path.basename(f))
添加回答
舉報(bào)
0/150
提交
取消