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)
如果我更换ConfigParser与RawConfigParser一切都很好.
您发布的错误与此无关.我们甚至无法判断它是python异常还是shell错误消息.请使用完整的错误消息更新您的问题.您可能还想检查sh模块,更高级别的包装器subprocess.