Python配置文件使用问题:如何正确存储URL变量并解决报错?
解决方案与错误修正
1. 配置文件的正确写法
配置文件存储字符串时,直接用单/双引号包裹内容即可,不需要在值里额外添加引号(代码读取后会自动识别为字符串类型,额外引号会引发语法错误)。按照你的需求修改TGtoken_URL的值:
# configuration.py config = { "Geraet_Name": 'gary2acepc8gb', # Telegram识别用的设备名称 "TGtoken_URL": 'https://api.telegram.org/', # 你需要的基础Telegram URL "YellowBellXCoord": 355, # 黄色铃铛X坐标 "YellowBellYCoord": 135, # 黄色铃铛Y坐标 }
2. 主代码的错误修正
你遇到的两个核心问题:Geraet变量未定义、subprocess参数格式错误,修正后的代码如下:
from configuration import config import subprocess import datetime from time import sleep # 从配置文件读取所需变量 TGtoken = config['TGtoken_URL'] # 配置中已是字符串,无需str转换 Geraet = config['Geraet_Name'] # 补充读取设备名,解决未定义报错 def CurlKillFirefox(): sleep(2) # 拼接curl请求的目标URL(根据需求组合TGtoken、标识和设备名) target_url = f"{TGtoken}KillFirefox_{Geraet}" # 正确构造curl命令参数列表 subprocess.call([ 'curl', '-X', 'POST', '-d', 'flow_x', target_url ]) # 输出时间戳 timenow = datetime.datetime.now() print("Curl KillFirefox", timenow) sleep(1)
3. 错误原因说明
- 'gary2acepc8gb'未定义:代码中使用了
Geraet变量,但未从配置文件的config['Geraet_Name']读取赋值,导致运行时找不到该变量。 - 语法错误:如果配置文件的URL值里嵌套了引号(比如写成
"'https://api.telegram.org/'"),会导致读取后的字符串包含多余引号,触发curl命令的语法错误。配置里直接写纯字符串即可。 - subprocess参数错误:原代码将元组
(TGtoken,'KillFirefox_',Geraet)直接作为curl参数,curl会把它拆成三个独立参数,不符合命令格式,必须先拼接成完整的字符串再传入。
内容的提问来源于stack exchange,提问作者Bill Sian
相关产品推荐
相关产品推荐

