Я уверен, что это что-то простое, но я пробую несколько настроек и просто не могу заставить это работать.
У меня есть следующий код:
import subprocess
p = subprocess.Popen('mkdir -p /backups/my_folder', stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
Это выполняется в flask
приложении на nginx
и python 3
Когда это выполняется, я получаю следующую ошибку:
/ bin / sh: 1: mkdir: не найдено
Я пытался с shell=False
, я пытался с Popen(['mkdir', ...])
, и я пытался subprocess.run
вот так вопрос / ответ
Если я запускаю с shell = False, я получаю следующую ошибку:
Ошибка: [Errno 2] Нет такого файла или каталога: 'mkdir -p
/ backups / my_folder ':' mkdir -p / backups / my_folder '
Когда я делаю /bin/mkdir
, это работает. Но есть другие команды, которые вызывают подкоманды, которые терпят неудачу (tar
вызывая gz
например)
Чего мне не хватает, чтобы заставить это работать?
Продолжительность:
Debian 9.8, Nginx 1.14.0, Python 3.6.8
EDIT
Мне нужно, чтобы это работало и для других команд. Я знаю, что могу использовать os.makedirs
, но у меня есть несколько разных команд, которые я буду выполнять (rsync, ssh, tar и другие)