使用 bash for 循环到 运行 Python 来自位于子目录中的单独文件的 doctest

Using bash for loop to run Python doctest from a separate file located in subdirectories

我正在测试大量学生的 python 项目。我在一个单独的文件中创建了一个 doctest,我称之为 mydoctest.rst

doctest 的第一行导入学生项目的模块:

from project3 import functionname

当我从与学生项目相同的目录调用它时,doctest 工作正常:

studentA$ python3 -m doctest mydoctest.rst

我想做的是使用 bash for 循环命令对每个子目录执行上述操作,因此我尝试执行以下操作。

parentdirectory$ for d in *; do python3 -m doctest "$d/"mydoctest.rst; done

但随后它会尝试在当前目录而不是每个子目录中查找模块。

有没有办法在执行 do python3 -m doctest 之前先 cd 进入每个子目录?

我目前的解决方法(我不满意)是: 对于 * 中的 d;做 cd“$d”; python3 -m doctest mydoctest.rst;裁谈会..;完成

我建议使用子 shell (...)cd:

for d in *; do (cd "$d" && python3 -m doctest mydoctest.rst); done

这应该有效

for d in *; do (cd "$d" ; python3 -m doctest mydoctest.rst); done