我使用find语句执行python脚本,这些脚本位于当前目录的所有子文件夹的子文件夹中
查找语句为find . -name \process.py -type f -exec python3 {} \;
我遇到的问题是脚本使用相对路径,例如..\data
来检索其他资源。通过从目录运行脚本单独执行脚本时,可以根据需要解析这些相对路径,但是当使用find
命令从父目录运行脚本两级时,路径将相对于该父目录解析导致错误< / p>
答案 0 :(得分:0)
如果您需要在python中执行此操作,我建议您查看以下答案: How to get an absolute file path in Python
找到绝对路径总是更好,如果使用bash:
readlink -f filename
答案 1 :(得分:0)
您可以使用find命令的-execdir
选项:
在/tmp
中具有以下文件夹结构:
/test
/test/subdir1
/test/subdir1/subdir2
/test/subdir1/subdir2/subdir3
和每个文件夹中的r.py
文件:
# r.py
import os
dirpath = os.path.dirname(os.path.realpath(__file__))
print(dirpath)
你有输出:
/tmp/test
/tmp/test/subdir1
/tmp/test/subdir1/subdir2
/tmp/test/subdir1/subdir2/subdir3