Я пытаюсь выполнить эту команду с помощью Python:Как выполнять сложные команды python с использованием подпроцесса с использованием относительной ссылки?
findSyntax = "find . -maxdepth 2 -name '.config' | cpio -updm ../test1/"
subprocess.Popen(findSyntax.split(' '))
Но эта команда просто не будет работать. Когда я запустил эту команду, он начнет перечислять все файлы (а не только .config) под. каталог за пределами maxdepth 2 ... который является длинным списком.
Что мне здесь не хватает! Может кто-нибудь это указать? Благодарю.
ПРИМЕЧАНИЕ. Я попытался запустить subProcess.run
, а также с теми же результатами. Я смог получить только часть поиска, используя команду os.system()
.
EDIT: Я просто хотел уточнить, что эта команда скопирует найденные файлы с точной структурой каталогов в новое место (при необходимости создав подкаталоги). Я пробовал эту команду на терминале bash, и он отлично работает. Но я не мог заставить его работать с Python.
EDIT2: Таким образом, вся команда работает с
os.system()
, но я не мог понять, как заставить его работать сsubprocess
.os.system()
должен быть устаревшим, поэтому мне было бы очень интересно выяснить решение, используя вместо этогоsubprocess
.
Вы должны сказать, чего вы ожидаете, вместо этого. –
Вы должны разбирать вещи. Сначала убедитесь, что ваша находка «находит» то, что вы ожидаете от нее, - когда вы запускаете ее вручную из командной строки! Затем: вы можете использовать модуль shlex вместо того, чтобы просто разделить вашу команду. – GhostCat
@GhostCat, я отредактировал вопрос с некоторыми деталями. Команда отлично работает на оболочке. Я не знаю о его модуле shlex, но я это сделаю. – rrlamichhane