从python中的.ini文件中读取特殊字符文本

Rah*_*pta 6 python configparser

我正在运行一个脚本,它带有一个文本"rAh%19u ^ l \&G"即包含特殊字符.

当我在我的脚本中将此文本作为参数传递时,它运行正常,没有任何错误.

示例 - : ./abc.py <username><pwd>

以上文字基本上是一个密码.

现在,当我将我的值放在配置文件中并阅读上面的文本时,脚本失败了.

*******abc.ini*******

[DEFAULT]
username = rahul
pwd =  rAh%19u^l\&G
Run Code Online (Sandbox Code Playgroud)

它说

/bin/sh:M command not found.
Run Code Online (Sandbox Code Playgroud)

在配置解析器的帮助下阅读上述值

******以下是程序abc.py******

#! /usr/bin/python

parser = configparser.ConfigParser()
parser.read('abc.ini')
username = parser.get('DEFAULT','username')
pwd = parser.get('DEFAULT','pwd')


p = subprocess.Popen(
    "abc.py {0} {1}" .format(username, pwd), 
    shell=True, 
    stdout=subprocess.PIPE
)

out, err = p.communicate()

print(out)
Run Code Online (Sandbox Code Playgroud)

我试了很多,但没有找到具体的东西.

所以问题是如何读取包含.ini文件中特殊字符的文本.

Pau*_*ine 11

看起来%角色是这里的问题.如果您使用它,它具有特殊意义ConfigParser.如果你没有使用插值,那么只需使用它RawConfigParser,否则你必须%通过加倍来逃避它.

当我尝试使用ConfigParser它的示例文件时会出现以下异常:

InterpolationSyntaxError: '%' must be followed by '%' or '(', found: '%19u^l\\&G"'
Run Code Online (Sandbox Code Playgroud)

如果我更换ConfigParserRawConfigParser一切都很好.

您发布的错误与此无关.我们甚至无法判断它是python异常还是shell错误消息.请使用完整的错误消息更新您的问题.您可能还想检查sh模块,更高级别的包装器subprocess.