由于空格,find命令在终端中有效,但通过subprocess.run(python 3.7)不起作用

时间:2019-01-28 02:11:17

标签: for-loop subprocess whitespace

我正在编写代码,以便使用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

在第二种情况下: 它从根目录搜索到整个目录。 (我停止了跑步)

有什么问题,我该怎么办?

0 个答案:

没有答案