使用带有特殊字符的密码的 ini 文件使用 python configparser
Using ini file with password having special characters using python configparser
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
读取文件后,解析出的密码与文件输入密码不一致。
帮助将不胜感激。谢谢
密码仍然相同,但它的表示形式让您感到困惑。
问题是“\7”可能被解释为特殊字符。为了避免混淆,python 写了一个双反斜杠。
要查看差异,您可以编写以下两个字符串:
string_1 = ""
string_2 = r""
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
抱歉,我无法为您提供更多帮助,因为我无法重现您的错误。
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
读取文件后,解析出的密码与文件输入密码不一致。 帮助将不胜感激。谢谢
密码仍然相同,但它的表示形式让您感到困惑。 问题是“\7”可能被解释为特殊字符。为了避免混淆,python 写了一个双反斜杠。 要查看差异,您可以编写以下两个字符串:
string_1 = ""
string_2 = r""
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
抱歉,我无法为您提供更多帮助,因为我无法重现您的错误。