Команда find работает в терминале, но не работает через subprocess.run (python 3.7) из-за пробелов - PullRequest
0 голосов
/ 28 января 2019

Я пишу код для выполнения некоторых команд во всех подкаталогах или определенных каталогах, используя модуль subprocess.run.

В модуле подпроцесса Ubuntu & 3.7 в python3 я использовал команду 'find' и для-loop оператор.

В терминале работает

1-й случай:

for paTh in $(find `pwd` -mindepth 1 -type d); do (cd $paTh && echo $paTh); done

2-й случай:

IFS='\n'; for paTh in $(find `pwd` -mindepth 1 -type d); do (cd $paTh && echo $paTh); done

Нокогда я запускаю их через Python с модулем подпроцесса, он получает ошибки

1-й случай:

c = 'for paTh in $(find `pwd` -mindepth 1 -type d); do (cd $paTh && echo $paTh); done'

или

2-й случай:

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' в терминале мой абсолютный путь содержит пробелы, например, "... / терминал с python /.../ my_forder

В 1-м случае: он показал мне дискретные линии, разделенные пробелами, как я упоминал выше.

.../terminal

with

python/.../my_forder

Во 2-м случае: он искал из корневого каталога в общие каталоги. (Я перестал работать)

В чем проблемы и что мне делать?

...