django和configparser,NoSectionError,但是找到了该部分

问题描述 投票:0回答:1

我在django视图中具有以下代码。

full_path = BASE_DIR + '/' + full_path
print(full_path)
ksinput_path = full_path + '/KSINPUT'
print(ksinput_path)
import configparser
parser = configparser.ConfigParser()
print(parser)
data = open(ksinput_path, 'r')
print(data)
parser.read_file(data)
print(parser.sections())
dhcp_network = parser.get('NETWORKING', 'DHCP_NETWORK')
ethernet_device = parser.get('NETWORKING', 'ETHERNET_DEVICE')
ip_address = parser.get('NETWORKING', 'IP_ADDRESS')
netmask = parser.get('NETWORKING', 'NETMASK')
gateway = parser.get('NETWORKING', 'GATEWAY')
hostname = parser.get('NETWORKING', 'HOSTNAME')
domain_name = parser.get('NETWORKING', 'DOMAIN_NAME')

if dhcp_network == 'No':
    NETWORK_LINE = "network --bootproto=static --device="+ethernet_device+" --ip="+ip_address+" --netmask="+netmask+" --gateway="+gateway+" --nameserver=10.19.21.40 --hostname="+hostname+"."+domain_name
else:
    NETWORK_LINE = "network --bootproto=dhcp --device="+ethernet_device

f = open(os.path.join(full_path, '/output'), 'w+')
f.write("Created iso with " + full_path +" and " + NETWORK_LINE + '\n')
f.write("This line intentionally left blank.")
f.close()

当我运行此代码时,打印出重要的行,我将在控制台上获得以下输出

/Users/jason/Desktop/kickstart_python/ks/myhostname.mydomain.com
/Users/jason/Desktop/kickstart_python/ks/myhostname.mydomain.com/KSINPUT
<configparser.ConfigParser object at 0x111cea828>
<_io.TextIOWrapper name='/Users/jason/Desktop/kickstart_python/ks/myhostname.mydomain.com/KSINPUT' mode='r' encoding='UTF-8'>
[]

所有这些路径都是准确的。这是KSINPUT文件的内容

[NETWORKING]
ETHERNET_DEVICE=eth0
HOSTNAME=myhostname
DOMAIN_NAME=mydomain.com
IP_ADDRESS=1.2.3.4
NETMASK=255.255.255.0
GATEWAY=3.4.5.6
DHCP_NETWORK=No

[当我从django视图运行时,得到

Exception Type: NoSectionError
Exception Value:    No section: 'NETWORKING'

但是,当我在django应用程序的虚拟环境的python shell中运行它时,它会起作用:

Python 3.4.1 (default, May 19 2014, 13:10:29)
[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import configparser
>>> parser = configparser.ConfigParser()
>>> data = open("/Users/jason/Desktop/kickstart_python/ks/myhostname.mydomain.com/KSINPUT", 'r')
>>> parser.read_file(data)
>>> parser.sections()
['NETWORKING']
>>>

一段时间以来,我一直都对此感到头疼,无法弄清楚问题出在哪里。有人看到明显的错误吗?

非常感谢。

python django configparser django-1.7
1个回答
0
投票

ConfigParser()查找的任何.ini文件应直接位于Django项目下。只有这样,Django才能加载。因此,每个应用程序的ini文件名应该不同,因为它们直接位于项目下。

希望它可以帮助某人。我真的很头疼! : - )

© www.soinside.com 2019 - 2024. All rights reserved.