在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文件里:
- 创建
run_scripts.sh文件,内容如下:
#!/bin/bash python ScriptA.py & python ScriptB.py &
- 给脚本添加执行权限:
chmod +x run_scripts.sh
- 在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
相关产品推荐
相关产品推荐

