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

如何编写shell脚本批量执行子文件夹内的Python程序

错误原因

原脚本存在两个核心问题导致执行失败:

  1. 第一次循环进入Data/data1目录后,后续循环的路径Data/*是基于当前已切换的data1目录计算的相对路径,找不到目标子文件夹,cd命令执行失败,自然无法运行对应Python脚本
  2. 直接执行python *.py不会依次运行目录下的所有py文件,只会将第一个py文件作为执行入口,剩余py文件会被当成入参传递给第一个脚本,不会单独执行

解决方案

方案1:切换目录执行(适配有相对路径依赖的Python脚本)

如果你的Python脚本依赖当前运行目录的相对路径读取资源,可以用这个方案,每次执行完切回初始目录:

# 遍历Data下的所有子文件夹,末尾加/确保只匹配目录
for dir in Data/*/
do
  cd "$dir"
  # 遍历当前目录下所有py文件依次执行
  for py_file in *.py
  do
    python "$py_file"
  done
  # 退回两级目录回到脚本初始执行位置
  cd ../../
done

方案2:直接指定完整路径执行(写法更简洁,不易出错)

如果你的Python脚本不依赖运行目录的相对路径,直接通过完整路径执行即可,不需要切换目录:

# 直接匹配所有子文件夹下的py文件依次执行
for py_file in Data/*/*.py
do
  python "$py_file"
done

补充说明

  • 所有变量建议用双引号包裹,避免路径存在空格时执行报错
  • 如果你使用的是Python3环境,将命令中的python替换为python3即可
  • 可先在执行python的命令前加echo打印要执行的指令,确认执行顺序符合预期后再去掉echo正式运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:27:01