我正在创建日间服务器的引用.我正在从INI文件中读取选项,其文本如下:
[Server]
host =
port = 17
[Quotes]
file=quotes.txt
Run Code Online (Sandbox Code Playgroud)
但是,当我使用ConfigParser时,它会给我这个错误:
Traceback (most recent call last):
File "server.py", line 59, in <module>
Start()
File "server.py", line 55, in Start
configOptions = parseConfig(filename)
File "server.py", line 33, in parseConfig
server = config['Server']
AttributeError: ConfigParser instance has no attribute '__getitem__'
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
#!/usr/bin/python
from socket import *
from ConfigParser import *
import sys
class serverConf:
port = 17
host = ""
quotefile = ""
def initConfig(filename):
config = ConfigParser()
config['Server'] = {'port': '17', 'host': …Run Code Online (Sandbox Code Playgroud) 所以,我有这个settings.ini:
[SETTINGS]
value = 1
Run Code Online (Sandbox Code Playgroud)
而这个python脚本
from ConfigParser import SafeConfigParser
parser = SafeConfigParser()
parser.read('settings.ini')
print parser.get('SETTINGS', 'value')
Run Code Online (Sandbox Code Playgroud)
如您所见,我想读取然后用另一个值替换值"1".我到目前为止所能做的就是阅读它.我在网上搜索了如何更换它,但我没有找到.
我已经注意到我的源代码控制使用ConfigParser生成的输出文件的内容永远不会以相同的顺序.有时,即使没有对值进行任何修改,部分也会更改部分内的位置或选项.
有没有办法在配置文件中对事物进行排序,这样我每次启动应用程序时都不必进行微不足道的更改?
我想知道 configparser 中 read 和 read_file 的使用有什么区别。据我测试过
config_parser = configparser.ConfigParser()
config_parser.read(config_file)
Run Code Online (Sandbox Code Playgroud)
和
config_parser = configparser.ConfigParser()
config_parser.read_file(config_file)
Run Code Online (Sandbox Code Playgroud)
两者都适合我。config_file 是我作为输入参数传递的 config_file 的名称。
我在配置文件中有一个 URL,我使用 ConfigParser 解析该 URL 以获取请求
配置文件
[default]
root_url ='https://reqres.in/api/users?page=2'
Run Code Online (Sandbox Code Playgroud)
FetchFeeds.py
import requests
from configparser import ConfigParser
import os
import requests
config = ConfigParser()
config.read(os.path.join(os.path.dirname(__file__), '../Config', 'config.ini'))
rootUrl = (config['default']['root_url'])
print(rootUrl)
response = requests.get(rootUrl)
Run Code Online (Sandbox Code Playgroud)
即使 URL 打印正确'https://reqres.in/api/users?page=2',但我在请求模块上收到以下错误
Traceback (most recent call last):
File "C:/Users/sam/PycharmProjects/testProject/GET_Request/FetchFeeds.py", line 11, in <module>
response = requests.get(rootUrl)
File "C:\Users\sam\PycharmProjects\testProject\venv\lib\site-packages\requests\api.py", line 76, in get
return request('get', url, params=params, **kwargs)
File "C:\Users\sam\PycharmProjects\testProject\venv\lib\site-packages\requests\api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Users\sam\PycharmProjects\testProject\venv\lib\site-packages\requests\sessions.py", line 530, in request …Run Code Online (Sandbox Code Playgroud) 是否有任何解决方案强制RawConfigParser.write()方法以字母顺序排序配置文件?
即使原始/加载的配置文件已排序,模块也会将部分和选项混合到各个部分中,并且非常讨厌手动编辑大量未排序的配置文件.
PD:我正在使用python 2.6
我在Python 2.7中使用ConfigParser从配置文件中读取,我想知道如何读取一个值,使其None在Python中设置为常量.
目前,我的代码如下:
config.set("Test Series Parameters", "Test Series Parameter", None)
Run Code Online (Sandbox Code Playgroud)
但是,这显示为Test Series Parameter = "None"(作为字符串).
我正在尝试将字典的内容写入(并稍后读入)到ConfigParser,我相信我正在根据文档正确地进行,但似乎无法使其工作.有人可以帮忙吗?
import ConfigParser
parser = ConfigParser.ConfigParser()
parser['User_Info'] = {"User1-votes":"36","User1-gamestart":"13232323","User2-votes":"36","User2-gamestart":"234234234","User3-votes":"36","User3-gamestart":"13232323"}
Traceback (most recent call last): File "<stdin>", line 1, in
<module> AttributeError: ConfigParser instance has no attribute '__setitem__'
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是有一个我可以更新的字典,并在最后写入配置文件,所以它看起来像:
[User_Info]
User1-gamestart = 13232323
User3-votes = 36
User2-votes = 36
User1-votes = 36
User2-gamestart = 234234234
User3-gamestart = 13232323
Run Code Online (Sandbox Code Playgroud) 我正在编写我想上传到 PyPI 的第一个 python 包。我根据这篇博文构建了我的代码。
我想将用户设置存储在 config.ini 文件中。在同一包中的单独 python 模块中读取一次(每次包运行时),并将用户设置保存在该模块的全局变量中。稍后导入其他模块中的那些。
为了重现错误,我刚刚在博客文章中描述的模板中编辑了几行代码。(请参考它,因为在此处重新创建整个内容需要太多的输入。)
唯一的区别是我stuff.py从这样的配置文件中读取:
from ConfigParser import SafeConfigParser
config = SafeConfigParser()
config.read('config.ini')
TEST_KEY = config.get('main', 'test_key')
Run Code Online (Sandbox Code Playgroud)
以下是config.ini(放置在与 相同的目录中stuff.py)的内容:
[main]
test_key=value
Run Code Online (Sandbox Code Playgroud)
而我bootstrap.py刚刚导入并打印TEST_KEY
from .stuff import TEST_KEY
def main():
print(TEST_KEY)
Run Code Online (Sandbox Code Playgroud)
但是在执行包时,导入失败给出这个错误
Traceback (most recent call last):
File "D:\Coding\bootstrap\bootstrap-runner.py", line 8, in <module>
from bootstrap.bootstrap import main
File "D:\Coding\bootstrap\bootstrap\bootstrap.py", line 11, in <module>
from .stuff import TEST_KEY
File "D:\Coding\bootstrap\bootstrap\stuff.py", line 14, in <module>
TEST_KEY …Run Code Online (Sandbox Code Playgroud) 我正在尝试在数据库(PostgreSQL 9.6)中创建表,并且当我启动python脚本这样做时,它返回以下类型的错误:
“在$ FILEDIR / database.ini文件中找不到节postgresql”
似乎解析器无法阅读本节,但我不明白为什么。
这是我的配置方法:
def config(filename='$FILEDIR/database.ini', section='postgresql'):
parser = ConfigParser()
parser.read(filename)
db = {}
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))
return db
Run Code Online (Sandbox Code Playgroud)
Database.ini:
[postgresql]
host=localhost
database=mydatabase
user=myuser
password=mypassword
Run Code Online (Sandbox Code Playgroud)
我已经尝试了以下线程中的答案,但它完全没有帮助。有人知道原因吗?我使用的是python 2.7,并且已经执行了“ pip install config”和“ pip install configparser”的依赖项。
configparser ×10
python ×10
ini ×2
python-2.7 ×2
python-3.x ×2
config ×1
dictionary ×1
import ×1