コードについて少し。私がやろうとしているのは、セクションを Dict に変換して、簡単に管理できるようにすることです。もちろん、ConfigParser はすべてを文字列として返すため (ほとんどの場合)、目的の型に変更する必要があります。そして、それが私の問題の始まりです。
コード
import ConfigParser, pygame
parser = ConfigParser.SafeConfigParser()
class loadfile(object):
def __init__(self, filename):
self.filename = filename
def load(self):
parser.read(self.filename)
for section_name in parser.sections():
vars()[section_name] = {}
for name, value in parser.items(section_name):
if value.isdigit():
value = int(value)
elif value == "None":
value = None
elif value == "True" or value == "False":
value = parser.getboolean( section_name, name )
else:
value = vars()[ parser.get( section_name, name ) ]
vars()[section_name].update( { name : value } )
print vars()[section_name]
def save(self):
pass
loadfile("config.ini").load()
config.ini
[Display]
Width : 800
Height : 600
Depth : 32
Caption : 45
Flags : pygame.RESIZABLE
Icon : None
Mouse : True
FPS : 30
; Key configuration;
[Keys]
Left : pygame/K_LEFT
Right : pygame.K_RIGHT
Jump : pygame.K_UP
Duck : pygame.K_DOWN
Sprint : pygame.K_RSHIFT
Attack_1 : pygame.K_a
Attack_2 : pygame.K_s
Attack_3 : pygame.K_d
gameMenu : pygame.K_ESCAPE
Dialogue : pygame.K_RETURN
エラー
Traceback (most recent call last):
File "C:\Users\***\Desktop\config2.py", line 35, in <module>
loadfile("config.ini").load()
File "C:\Users\***\Desktop\config2.py", line 27, in load
value = vars()[ parser.get( section_name, name ) ]
KeyError: 'pygame.RESIZABLE'
使用した場合、コードを独自のクラスに入れる前に同じエラーが発生しましたが、使用import pygame
すると不思議なことに消えましたfrom pygame import *