有没有办法从 Python 中的字典中选择和打开文本文件?

Is there a way to choose and open a text file from a dictionary in Python?

我目前正在编写一个程序,该程序使用 turtle 在 TAB 中显示一组吉他和弦,我想知道如果可以使用带有数值数据,然后将文本文件的名称存储在 python 中的字典中,如下所示:

d = {0: "", 1: "Am.txt", 2: "Bm.txt", 3: "Cm.txt", 4: "Dm.txt", 5: "Em.txt", 6: "Fm.txt", 7: "Gm.txt"}
l = [0,1,2,3,4,5,6,7]

我的目标是使用顺序搜索来根据用户输入确定要打开哪个测试文件:

n = 0
penup()
T.color('white')
x = 0

while x != 1: # this while loop is redundant
    N = 0
    chord = int(input("Please choose a number for your chord"))
    # compare input with dictionary values
    while N != 2:
        if(chord == l[n]):
            f = open(d[n])
            while True:
                N2 = f.readline()
                if not N2:
                    break
        if(chord != l[n]):
            n = n + 1
    
        N = N + 1
    x = x + 1


我之前的代码只是告诉海龟如何使用 N2 移动和写入文件中的文本的命令。 到目前为止,我的结果只是打印“Am.txt”,而不是该文本文件中的内容,后面没有任何错误消息。我之前的代码是用 if 语句手动写出所有内容,但如果我能完成这项工作,那对我来说似乎是不必要的。

我假设您是编码新手?字典的好处是你可以通过他们的keys直接访问values。还要小心 while True 循环,因为它们会创建无限循环... 同样在您的情况下,用户需要知道哪个数字是哪个和弦。为什么不使 keys 更具体。另请阅读有关打开和读取文件的信息。 现在试试这个,但要注意你必须在 Am.txtBm.txt 所在的目录中(绝对路径与相对路径)。

d = {0: "", 'Am': "Am.txt", 'Bm': 'Bm.txt'}


while True:
    chord = input('Input Chord: ')
    if chord in d:
        with open(d[chord], 'r') as f:
            lines = f.readlines()

        for line in lines:
            print(line)
    else:
        print('chord not found')