如何用Configparser读取config.ini并为Curl调用正确赋值变量?
问题解答
你的两种TGtoken赋值方式都错误
当前脚本里TGtoken = Device_Name是把设备名重复赋值给TGtoken,完全不符合需求;你提到的另一种TGtoken = configini.get('DeviceInfo', 'Devicename')也不对,因为这还是读取的设备名字段,不是Telegram令牌对应的字段。
正确的赋值与代码修正
- 正确读取配置并赋值
你的config.ini中,设备名字段是Devicename,Telegram令牌字段是TGtokenCurl,所以正确的变量赋值代码如下:
import configparser import subprocess import datetime from time import sleep configini = configparser.ConfigParser() # 路径用正斜杠或双反斜杠避免转义问题 configini.read("scr/config/config.ini") # 设备名赋值给Geraet Geraet = configini.get('DeviceInfo', 'Devicename') # Telegram令牌赋值给TGtoken TGtoken = configini.get('DeviceInfo', 'TGtokenCurl') print(Geraet)
- 修正Curl调用函数
原函数中把元组作为curl参数会导致调用失败,需要将TG令牌、错误标识和设备名拼接成完整的请求URL:
def CurlExeptionErrorAccours(): sleep(2) # 拼接完整的Telegram API请求地址 full_tg_request_url = f"{TGtoken}ExeptionErrorAccours_{Geraet}" subprocess.call([ 'curl', '-X', 'POST', '-d', 'flow_x', full_tg_request_url ]) timenow = datetime.datetime.now() print("Curl ExeptionErrorAccours", timenow) sleep(1)
额外提示
- 配置文件路径建议用正斜杠
/或双反斜杠\\,避免单斜杠引发的转义问题 - 如果想让
[DEFAULT]中的内容作为字段默认值,建议把DEFAULT里的字段名改成和[DeviceInfo]一致(比如DEFAULT里写Devicename = NameoftheDevice),这样configparser会自动在DeviceInfo字段缺失时读取DEFAULT的对应值,更符合工具的使用逻辑
内容的提问来源于stack exchange,提问作者Bill Sian
相关产品推荐
相关产品推荐

