【问题标题】:Using ini file with password having special characters using python configparser使用带有特殊字符的密码的ini文件使用python configparser
【发布时间】:2022-06-30 17:59:43
【问题描述】:

new.ini 文件

[main]
user_name = username
password = [k!:SU`T&m5@3D\\7Z

python 代码

from configparser import ConfigParser
config = ConfigParser()
config.read(CONFIG.ini file path)
print(config["main"]["user_name"])
print(config["main"]["password"])

输出:

username
[k!:SU`T&m5@3D\\\\7Z

读取文件后,解析出的密码与文件输入密码不同。

【问题讨论】:

  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。
  • 请与@Carlos Horn 一起查看下面的 cmets

标签: python-3.x pip package configparser


【解决方案1】:

密码仍然是相同的,但它的表示使您感到困惑。 问题是可以解释为特殊字符的“\7”。为了避免混淆,python 写了一个双反斜杠。 要查看差异,您可以编写以下两个字符串:

string_1 = "\7"
string_2 = r"\7"
print(string_1)
print(string_2)

print(repr(string_1))
print(repr(string_2))

我希望这可以帮助您理解 python 显示的区别。

编辑:

不应该有额外的反弹。请尝试以下方法:

import configparser

content = r"""
[main]
user_name = username
password = [k!:SU`T&m5@3D\\7Z
"""
with open('test.ini', mode='w') as file:
    file.write(content)
parser = configparser.ConfigParser()
with open('test.ini', mode='r') as file:
    parser.read_file(file)
assert parser['main']['password'] == r"[k!:SU`T&m5@3D\\7Z"

Edit2:请尝试编辑后的代码。它应该创建您的 ini 文件并读取正确的密码,如断言所测试的那样。

编辑3: 我只是复制粘贴您的 ini 文件并运行您的行并获得正确的输出,而无需额外的斜杠:

username
[k!:SU`T&m5@3D\\7Z

那么请您显示以下几行的输出:

import platform
import sys

print(sys.version)
print(platform.platform())
print(sys.getdefaultencoding())

在我的情况下是这样说的:

3.8.5 (default, Sep  4 2020, 07:30:14) 
[GCC 7.3.0]
Linux-4.12.14-lp151.28.91-default-x86_64-with-glibc2.10
utf-8

抱歉,我无法进一步帮助您,因为我无法重现您的错误。

【讨论】:

  • 我理解这个表示。但我正在尝试找到一种方法来删除额外添加反斜杠到 configparser 包中的密码字符串。 @卡洛斯霍恩
  • 您编辑了您的 ini 文件内容,所以您需要两个斜杠“[k!:SU`T&m5@3D\\7Z”还是密码中只有一个?
  • 这很有帮助。但我正在尝试发送相同的密码来访问服务器。试图了解 configparser 包中是否有一种方法可以在任何其他变量包含反斜杠时动态地将代码从双反斜杠转换或替换为单反斜杠。 @卡洛斯霍恩
  • 我的密码在 ini 文件中包含两个反斜杠。 @Carlos Horn 当我使用 configparser 解析时。解析器在变量中包含 4 个反斜杠。
  • 我编辑了答案,无法重现您的错误。可能是操作系统的问题...
猜你喜欢
  • 2014-03-03
  • 1970-01-01
  • 2013-01-04
  • 2015-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-05
相关资源
最近更新 更多