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

在Python中同时运行两个脚本报错求助:执行bash命令提示无效语法

解决Python函数中调用Shell命令的语法错误问题

嘿,我一眼就看出你踩了个典型的坑——你把Bash Shell的后台运行命令直接写到Python函数里了!Python解释器根本认不出python ScriptA.py &这种Shell语法,这就是你反复遇到「Invalid Syntax」错误的根源。

别慌,给你几个靠谱的解决方案:

方案1:用Python标准库subprocess调用外部脚本(推荐)

Python有专门的subprocess模块用来调用外部程序,比直接写Shell命令安全且灵活。把你的代码改成这样:

import subprocess

def song():
    user = input()
    if user == "Chance":
        # 启动ScriptA,后台运行
        subprocess.Popen(["python", "ScriptA.py"])
        # 启动ScriptB,后台运行
        subprocess.Popen(["python", "ScriptB.py"])
    else:
        print("Error")
  • subprocess.Popen会启动一个新的子进程来运行脚本,默认就是后台执行的(不需要加&)
  • 如果你的系统默认Python版本是3,记得把python改成python3,避免版本冲突
  • 这种方式不需要依赖额外的Shell脚本,逻辑都在Python里统一管理

方案2:写独立的Bash脚本,再用Python调用

如果更习惯用Shell命令管理多脚本启动,可以把启动逻辑单独放到一个.sh文件里:

  1. 创建run_scripts.sh文件,内容如下:
#!/bin/bash
python ScriptA.py &
python ScriptB.py &
  1. 给脚本添加执行权限:
chmod +x run_scripts.sh
  1. 在Python函数里调用这个Shell脚本:
import subprocess

def song():
    user = input()
    if user == "Chance":
        subprocess.run(["./run_scripts.sh"])
    else:
        print("Error")

这种方式把Shell启动逻辑和Python业务逻辑分开,适合后期需要调整启动参数的场景。

额外检查项

  • 先单独运行python ScriptA.py和python ScriptB.py,确认这两个脚本本身没有语法错误,排除脚本自身的问题
  • 确保所有文件都在同一目录下,或者用绝对路径指定脚本位置

内容的提问来源于stack exchange,提问作者A.J

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:14:53