這看起來很簡單,但我不知道出了什么問題。首先,我收集了目錄中所有文件名的列表,這些文件名與特定字符串相匹配: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
提交
取消