我在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']
>>>
我一直在反对这一点,并且无法弄清问题是什么。有人看到一个明显的错误吗?
非常感谢。
答案 0 :(得分:0)
任何ConfigParser()查找的.ini文件应直接位于Django项目下。只有这样,Django才能加载。因此,每个应用程序的ini文件名都应该不同,因为它们直接位于项目下。
希望它可以帮助某人。我真的很头疼! :-)