我正在编写代码,以便使用subprocess.run模块在每个子目录或某些目录上执行一些命令。
在python3中的Ubuntu&3.7子进程模块上, 我使用了“查找”命令和for循环语句。
在终端中,它起作用
第一种情况:
for paTh in $(find `pwd` -mindepth 1 -type d); do (cd $paTh && echo $paTh); done
第二种情况:
IFS='\n'; for paTh in $(find `pwd` -mindepth 1 -type d); do (cd $paTh && echo $paTh); done
但是当我通过带有子流程模块的Python运行这些代码时,却出错了
第一种情况:
c = 'for paTh in $(find `pwd` -mindepth 1 -type d); do (cd $paTh && echo $paTh); done'
或
第二种情况:
c = 'IFS=\'\\n\'; for paTh in $(find `pwd` -mindepth 1 -type d); do (cd $paTh && echo $paTh); done'
然后
subprocess.run(c, check=True, shell=True, cwd='.')
但是请记住,在终端上键入'pwd'时,我的绝对路径包含空格,例如,“ ... / terminal with python /.../ my_forder
在第一种情况下: 如上所述,它向我显示了由空白隔开的离散线。
.../terminal
with
python/.../my_forder
在第二种情况下: 它从根目录搜索到整个目录。 (我停止了跑步)
有什么问题,我该怎么办?