Короткий ответ : удалить shell = True (также удалить backsla sh перед '.', Зачем вам это нужно?), Например:
subprocess.call(['cp','-rf','/tmp/test.py','/tmp/blacktest/']
Совет : используйте возможность python для копирования файла
import shutil
shutil.copyfile(src, dst)
Длинный ответ :
shell = True добавит вам команду с / bin / sh - c
Это означает, что ПЕРВЫЙ аргумент, идущий после - c, является командой, выполняемой с использованием / bin / sh. Этот ваш первый аргумент - cp
, который затем выполняется отдельно, без аргументов ... Вот почему вы видите сообщение об ошибке.
Вы все равно можете запускать, используя shell = true если вы скажете, что ВСЕ ваши аргументы на самом деле представляют собой одну команду для оболочки:
subprocess.call(['cp -rf q.py w'], shell=True)