python - 执行子文件夹内的代码
问题描述
我在文件夹(数据)中有子文件夹(data1,data2,data3),python(.py)程序存在于所有同名的子文件夹中。我想在每个文件夹中运行这些 python 程序。
Data
data1/a.py
data1/b.py
data1/c.py
data2/a.py
data2/b.py
data2/c.py
data3/a.py
data3/b.py
data3/c.py
我尝试了下面的代码:
for dir in Data/*
do
cd $dir
python *.py
done
但它不执行子文件夹内的代码,任何人都可以提出适当的解决方案。
解决方案
不要使用循环执行此操作。假设你想运行所有的 python 脚本Data/
,并且你希望这些脚本在当前工作目录中执行,等于找到脚本的目录,使用:
find Data -name '*.py' -execdir ./{} \;
如果您不想执行所有脚本,请find
适当过滤。
例如,如果您只想运行脚本 name a.py
、b.py
或c.py
,您可以使用:
find Data -name '[abc].py' -execdir ./{} \;
如果您的目录命名不佳,您可能还希望使用-type f
来避免尝试执行名为a.py
. 例如find Data -type f -name '[abc].py' -execdir ./{} \;
您可以通过指定目录来简单地限制范围:或find Data/data1 Data/data3 ...
按预期工作。find Data/data[12] ...
find Data/data[13] ...
推荐阅读
- java - 带有java json的对象数组
- python - 如何根据另一个键的值在字典中选择一个键的值
- databricks - 在 Databricks 上查看临时笔记本作业
- vb.net - 如何防止使用 StreamWriter 删除尾随零
- javascript - 覆盖数据表搜索
- recursion - 参数数据类型
- asp.net - Kestrel:在身份验证握手请求之间收到匿名请求?
- xml - 我需要更新 XLST 中的电话号码以删除“+”“-”和电话分机
- python - 使用相同索引并行遍历 2 个列表
- android - 在使用 Kotlin 为 SQLite 中的列指定类型时,如何使用一组特定的单词?