Я написал этот скрипт для некоторых резервных копий:
date = str(now.year)+str(now.month)+str(now.day)
tar="tar -pczf "+date+"backup_lucas.tar.gz /home/lucas/backup/"
subprocess.Popen(tar)
Но тогда я получаю:
File "test.py", line 21, in <module>
subprocess.Popen(tar)
File "/usr/lib/python2.6/subprocess.py", line 623, in __init__
errread, errwrite)
File "/usr/lib/python2.6/subprocess.py", line 1141, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
Когда я добавляю команду add shell = True в команду Popen, она работает:
subprocess.Popen(tar,shell=True)
Однако я слышал, что shell = True следует избегать, так как иногда он небезопасен (?).
Как я могу успешно выполнить команду без использования shell = True?