python3 модуль подпроцесса не может работать для cp - PullRequest
0 голосов
/ 16 июня 2020

код выглядит следующим образом, но я не могу понять, почему произошла ошибка, когда я запускаю "cp -rf /tmp/test.py / tmp / blacktest /", он работает нормально

>>> subprocess.call(['cp','-rf','/tmp/test\.py','/tmp/blacktest/'],shell=True)
 cp: missing file operand
 Try 'cp --help' for more information.
 1

1 Ответ

0 голосов
/ 16 июня 2020

Короткий ответ : удалить 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)
...