Python - KeyError(key) 被提出,但它不应该



为什么这段代码引发错误:

import configparser
import os

path = '/home/solus/Downloads/TestOnMe'
os.chdir(path)
config = configparser.ConfigParser()
config.read('extensions.ini')
extensions = config['Extensions']

但相反,这段代码完美无缺:

import configparser
import os

config = configparser.ConfigParser()
config.read('extensions.ini')
extensions = config['Extensions']

错误如下:

Traceback (most recent call last):
File "/home/solus/Documents/Projects/Python/Learning Python from YT/Own/configurator/testtesttest.py", line 11, in <module>
extensions = config['Extensions']
File "/usr/lib/python3.6/configparser.py", line 959, in __getitem__
raise KeyError(key)
KeyError: 'Extensions'

扩展内容.ini:

[Extensions]
music = ['mp3', 'acc']
photos = ['jpeg', 'jpg', 'png']
archives = ['rar', 'zip', 'tar', 'tar.bz', 'tar.gz']
documents = ['epub', 'pdf', 'doc']

Python 文件和.ini文件都在同一个目录中。

答案很简单。仔细观察:

import configparser
import os

path = '/home/solus/Downloads/TestOnMe'
os.chdir(path)

有了os.chdir(path),你把你的路径改成了'/home/solus/Downloads/TestOnMe'。由于路径已更改,Python尝试在TestOnMe目录中搜索extensions.ini。这就是为什么它引发错误的原因。要纠正此错误,您需要更改指令的顺序。

import configparser
import os

config = configparser.ConfigParser()
config.read('extensions.ini')
path = '/home/solus/Downloads/TestOnMe'
os.chdir(path)
extensions = config['Extensions']

相关内容

最新更新