You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python脚本无法读取config.ini中path3携带的ens6f0参数求助

解决方法

问题根因

  • 你在config.ini中给路径加了双引号,configparser读取时会将双引号作为值的一部分读取,导致系统无法识别被引号包裹的完整路径+参数串
  • 你调用subprocess.call时同时传入了列表参数和shell=True,这种情况下只有列表的第一个元素会被作为执行命令,参数不会被正确传递给目标脚本

修复步骤

1. 修正config.ini配置

去掉所有path值外层的双引号,修改后配置如下:

[my-config]
path1 = /home/asad.javed/stop-services.sh
path2 = /home/asad.javed/script.py
path3 = /home/asad.javed/getbps.sh ens6f0

2. 修正subprocess调用逻辑

两种可选方案,推荐第二种更安全:

方案A:调整调用参数适配shell模式

保留shell=True的情况下,直接传命令字符串而非列表,shell会自动拆分命令和参数:

elif args.start:
    subprocess.call(path1, shell=True)
    subprocess.call(path2, shell=True)
    subprocess.call(path3, shell=True)

方案B:使用shlex拆分命令(推荐,无需开启shell=True)

先导入shlex模块,用shlex.split自动拆分命令和参数,避免shell注入风险:

# 顶部导入模块
import shlex

# 调用部分修改为
elif args.start:
    subprocess.call(shlex.split(path1))
    subprocess.call(shlex.split(path2))
    subprocess.call(shlex.split(path3))

其他代码问题提示

当前代码的停止逻辑存在错误:get_sipresponse函数中sys.path.append返回值为None,赋值给p后无法调用terminate方法,且p是函数局部变量,main函数中无法直接访问。如果需要实现停止服务的能力,需要将subprocess.call替换为subprocess.Popen,将启动的进程对象存储为全局变量或者可访问的变量,才能在停止逻辑中调用terminate方法终止进程。


内容的提问来源于stack exchange,提问作者Asad Javed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 17:18:04