标签: configparser

ConfigParser - 写入 .ini 文件

我有一个 config.ini 文件,其中包含 Web 应用程序的一些默认配置(使用 VS 2017 的 Flask)

我也想自己写一些配置。

我正在使用下面的代码尝试在该[keys]部分中写入,变量是gkey

def writeKey(key):
    Config = configparser.ConfigParser()    
    configFile = Path("config.ini")
    if configFile.is_file() == False:
        cfgfile = open("config.ini",'w')
    else:
        cfgfile = open("config.ini")

    # add the settings to the structure of the file, and lets write it out...
    Config.add_section('keys')
    Config.set('gkey','key',True)
    Config.write(cfgfile)
    cfgfile.close()

gkey = encrypt(key)
writeKey(gkey)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Traceback (most recent call last):
  File "C:\Users\blivo\documents\visual studio 2017\Projects\blivori2\blivori2\blivori2\functions\common.py", line 59, in <module>
    writeKey(gkey)
  File "C:\Users\blivo\documents\visual studio 2017\Projects\blivori2\blivori2\blivori2\functions\common.py", line 30, in writeKey …
Run Code Online (Sandbox Code Playgroud)

python configparser flask

5
推荐指数
1
解决办法
1万
查看次数

pyinstaller 无法看到 configparser

我在 python 应用程序中使用 configparser

当我运行应用程序时

python main.py
Run Code Online (Sandbox Code Playgroud)

有用。但是,如果我使用 pyinstall 创建 Windows exe,该 exe 将失败并显示消息

no module named 'configparser'
Run Code Online (Sandbox Code Playgroud)

然而,如屏幕截图所示,configparser 确实存在

这里发生了什么?

注意:如果从目录中删除 __init__.py,我不会收到错误

在此输入图像描述

[更多信息]

这似乎是“sys.path”问题。如果我将 configparser.py 复制到我的应用程序目录中,问题就会转移到我正在调用的另一个模块上

我应该更改我的 pyinstaller 规范文件吗?

# -*- mode: python -*-
a = Analysis(['main.py'],
             hiddenimports=[],
             hookspath=None,
             runtime_hooks=None)
a.datas = list({tuple(map(str.upper, t)) for t in a.datas})
pyz = PYZ(a.pure)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          name='test_imports.exe',
          debug=False,
          strip=None,
          upx=True,
          console=True)
Run Code Online (Sandbox Code Playgroud)

python pyinstaller configparser python-3.x

5
推荐指数
1
解决办法
4036
查看次数

如何将字符串转换为元组

我喜欢在Python脚本中转换以下字符串:

mystring='(5,650),(235,650),(465,650),(695,650)'
Run Code Online (Sandbox Code Playgroud)

到元组列表

mytuple=[(5,650),(235,650),(465,650),(695,650)]
Run Code Online (Sandbox Code Playgroud)

这样 print mytuple[0]得到:

(5,650)
Run Code Online (Sandbox Code Playgroud)

python configparser

4
推荐指数
1
解决办法
410
查看次数

使用 configparser 添加注释

我可以使用 python 中的 ConfigParser 模块使用 add_section 和 set 方法创建 ini 文件(参见http://docs.python.org/library/configparser.html 中的示例)。但我没有看到任何关于添加评论的内容。那可能吗?我知道使用 # 和 ; 但是如何让 ConfigParser 对象为我添加它?我在 configparser 的文档中没有看到任何关于此的内容。

python configparser

4
推荐指数
1
解决办法
4062
查看次数

使用python在配置文件中写注释

我需要在运行时通过ConfigParserPython中的库生成的配置文件中写一些注释.

我想写一个完整的描述性评论,如:

########################
# FOOBAR section 
# do something 
########################
[foobar]
bar = 1
foo = hallo
Run Code Online (Sandbox Code Playgroud)

代码应如下所示:

我在同一时刻插入注释和配置选项的位置.

import ConfigParser

config = ConfigParser.ConfigParser()

config.insert_comment("##########################") # This function is purely hypothetical 
config.insert_comment("# FOOBAR section ")
....

config.add_section('foobar')
config.set('foobar', 'bar', '1')
config.set('foobar', 'foo', 'hallo')
Run Code Online (Sandbox Code Playgroud)

python comments configparser

4
推荐指数
1
解决办法
7895
查看次数

如何在INI文件中编写时删除空格 - Python

我正在使用一个文件,我有一个名为DIR的部分,其中包含路径.EX:

[DIR]
DirTo=D:\Ashish\Jab Tak hai Jaan
DirBackup = D:\Parser\ERICSSON_CSCORE_STANDARD_VMS\Backup
ErrorDir = D:\Parser\ERICSSON_CSCORE_STANDARD_VMS\Error

CombinerDir = D:\Parser\ERICSSON_CSCORE_STANDARD_VMS\Combiner
DirFrom=D:\Parser\ERICSSON_CSCORE_STANDARD_VMS\In
PidFileDIR = D:\Parser\ERICSSON_CSCORE_STANDARD_VMS\Pid
LogDir = D:\Parser\ERICSSON_CSCORE_STANDARD_VMS\Log   
TempDir = D:\Parser\ERICSSON_CSCORE_STANDARD_VMS\Temp
Run Code Online (Sandbox Code Playgroud)

现在我想要替换我已经完成它的路径,但是当我替换它在新写入的.ini文件中的分隔符之前和之前给我空格.例如:DirTo = D:\Parser\Backup.我如何删除这些空格?

码:

def changeINIfile():
    config=ConfigParser.RawConfigParser(allow_no_value=False)
    config.optionxform=lambda option: option
    cfgfile=open(r"D:\Parser\ERICSSON_CSCORE_STANDARD_VMS\Windows\opx_PAR_GEN_660_ERICSSON_CSCORE_STANDARD_PM_VMS_MALAYSIA.ini","w")
    config.set('DIR','DirTo','D:\Ashish\Jab Tak hai Jaan')
    config.optionxform=str
    config.write(cfgfile)
    cfgfile.close()
Run Code Online (Sandbox Code Playgroud)

python configparser python-2.7

4
推荐指数
2
解决办法
4887
查看次数

扩展插值在configparser中不起作用

我试图使用python 3.6或python 3.5.1中标准库中的configparser模块

我的ini文件看起来像这样:

[common]
domain = http://some_domain_name:8888
about = about/
loginPath = /accounts/login/?next=/home
fileBrowserLink = /filebrowser
partNewDirName = some_dir

[HUE_310]
partNewFilePath = ${common:domain}
Run Code Online (Sandbox Code Playgroud)

我的“主”程序如下所示:

from configparser import ConfigParser

parser = ConfigParser()
parser.read('configfile.ini')

lll = parser.get('HUE_310', 'partNewFilePath')
print(lll)
Run Code Online (Sandbox Code Playgroud)

相反,http://some_domain_name:8888我得到了${common:domain}

我将Pycharm社区用作我的IDE。我使用virtualenv。

我不知道我的代码有什么问题...

python configparser python-3.x

4
推荐指数
1
解决办法
2201
查看次数

python 3 configparser.read() 在给定不存在的文件时不会引发异常

当我尝试使用 configparser.read 读取不存在的文件时,我认为它应该引发异常。它没有。它返回一个空列表。显然,我可以测试一个空列表并引发异常。如果 configparser.read 引发 FileNotFound 异常,在我看来它更直观和更安全。

jeffs@jeffs-laptop:~/nbmdt (blue-sky)*$ python3.6
Python 3.6.2 (default, Oct  2 2017, 16:51:32)  [GCC 7.2.1 20170915 (Red Hat 7.2.1-2)] on linux 
Type "help", "copyright", "credits" or "license" for more information.
 >>> import configparser
 >>> config=configparser.ConfigParser()
 >>> config.read("xyzzy.xyz")
[]
 >>> config.read("nbmdt.ini")
 ['nbmdt.ini']
 >>>
Run Code Online (Sandbox Code Playgroud)

谢谢

python configparser

4
推荐指数
1
解决办法
1435
查看次数

如果配置文件中没有,Python ConfigParser 使用默认值

如果配置文件中未定义默认值,那么使用默认值的最佳方法是什么?例如,在下面的示例中,可能仅listen_address在配置中定义,并且listen_port不存在。

我正在尝试这样的事情:

import ConfigParser
from os.path import isfile

if __name__ == "__main__":

    # Set default values
    listen_address = '127.0.0.1'
    listen_port = 8000

    # Check for configurations from file and override defaults
    configFile = './configuration.ini'
    if isfile(configFile):
        configs = ConfigParser.ConfigParser()
        configs.read(configFile)
        try:
            listen_address = configs.get('ServerConfigs', 'listen_address')
        except:
            pass
        try:
            listen_port = configs.get('ServerConfigs', 'listen_port')
        except:
            pass
Run Code Online (Sandbox Code Playgroud)

但这感觉很丑。

python default configparser

4
推荐指数
1
解决办法
3929
查看次数

来自配置解析器的python字典,如果值和值中的"%(":"int"类型的参数不可迭代

随机出现此错误,有时会出现,有时不会:

for i in range(1,32):
    sezione = "GRP"+str(i)
    dizionarioGRP = dict(config.items(sezione))
    print int(dizionarioGRP['r'])
Run Code Online (Sandbox Code Playgroud)

这是错误

  File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
    self.run()
  File "/home/pi/gigi.py", line 436, in run
    self.esegui()
  File "/home/pi/gigi.py", line 307, in esegui
    L.gruppo(idgruppo)
  File "/home/pi/gigi1.py", line 282, in gruppo
    dizionarioGRP = dict(config.items(sezione))
  File "/usr/lib/python2.7/ConfigParser.py", line 655, in items
    for option in options]
  File "/usr/lib/python2.7/ConfigParser.py", line 663, in _interpolate
    if value and "%(" in value:
TypeError: argument of type 'int' is not iterable
Run Code Online (Sandbox Code Playgroud)

为什么它引用为int,如果我将它转换为字符串?

python config configparser

3
推荐指数
1
解决办法
1396
查看次数