我正在尝试使用ConfigParser为我的pygame游戏读取.cfg文件。我出于某种原因无法使其发挥作用。代码如下所示:
import ConfigParser
def main():
config = ConfigParser.ConfigParser()
config.read('options.cfg')
print config.sections()
Screen_width = config.getint('graphics','width')
Screen_height = config.getint('graphics','height')
此文件中的主要方法在游戏的启动器中调用。我已经测试了它,并且完美无缺。当我运行此代码时,我收到此错误:
Traceback (most recent call last):
File "Scripts\Launcher.py", line 71, in <module>
Game.main()
File "C:\Users\astro_000\Desktop\Mini-Golf\Scripts\Game.py", line 8, in main
Screen_width = config.getint('graphics','width')
File "c:\python27\lib\ConfigParser.py", line 359, in getint
return self._get(section, int, option)
File "c:\python27\lib\ConfigParser.py", line 356, in _get
return conv(self.get(section, option))
File "c:\python27\lib\ConfigParser.py", line 607, in get
raise NoSectionError(section)
ConfigParser.NoSectionError: No section: 'graphics'
问题是,有一个部分'图形'。
我正在尝试阅读的文件如下所示:
[graphics]
height = 600
width = 800
我已经确认它实际上称为options.cfg。 config.sections()仅返回:“[]”
在使用相同的代码之前我已经完成了这项工作,但它现在无法工作。任何帮助将不胜感激。
答案 0 :(得分:3)
可能找不到您的配置文件。在这种情况下,解析器只会生成一个空集。您应该使用对文件的检查来包装代码:
from ConfigParser import SafeConfigParser
import os
def main():
filename = "options.cfg"
if os.path.isfile(filename):
parser = SafeConfigParser()
parser.read(filename)
print(parser.sections())
screen_width = parser.getint('graphics','width')
screen_height = parser.getint('graphics','height')
else:
print("Config file not found")
if __name__=="__main__":
main()
答案 1 :(得分:1)
我总是使用SafeConfigParser
:
from ConfigParser import SafeConfigParser
def main():
parser = SafeConfigParser()
parser.read('options.cfg')
print(parser.sections())
screen_width = parser.getint('graphics','width')
screen_height = parser.getint('graphics','height')
还要确保有一个名为options.cfg
的文件,并在需要时指定完整路径,正如我已经评论过的那样。如果没有找到文件,解析器将无提示失败。
答案 2 :(得分:0)
我也面临着同样的问题。我已将项目移到其他位置,并认为它可以正常工作。但是在新位置执行代码后,它找不到我的配置文件并抛出错误:
例外:在database.ini文件中找不到节postgresql_conn_config
解决方案:提供文件的完整路径,并正确放置调试语句以识别问题。下面是我的代码。希望对您有所帮助:
from configparser import ConfigParser
import os
def get_connection_by_config(filename='database.ini',section='postgresql_conn_config'):
'''
This method will use the connection data saved in configuration file to get postgresql database server connection.
filename : Is the configuration file saved path, the configuration file is database.ini in this example, and it is saved in the same path of PostgresqlManager.py file.
section_name : This is the section name in above configuration file. The options in this section record the postgresql database server connection info.
'''
# create a parser
parser = ConfigParser()
# define the file path
loc = '/src/data_engineering/'
cwd = os.path.abspath(os.getcwd()).replace('\\', '/')
path = cwd+loc
filename_ = path+filename
db = {}
#check file path
if os.path.isfile(filename_):
# read config file
parser.read(filename_)
# get section
if parser.has_section(section):
params = parser.items(section)
for param in params:
db[param[0]] = param[1]
else:
raise Exception('Section {0} not found in the {1} file'.format(section, filename))
else:
raise Exception("File {} not found in location".format(filename_))
return db