2016-08-09 1 views
0

Я пытаюсь выполнить следующую команду, используя Popen.Tar --exclude не работает, когда popen (shell = False)

args = ['/bin/tar', "--exclude='{}'".format('Build.tar.gz'), '-capvf', targetFile, '.' ] 
popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) 

Однако исключить часть работает только если я устанавливаю оболочки = True IE выполнения выше команды не исключает файл «Build.tar.gz». Почему? Есть ли способ сделать эту работу без установки оболочки = True?

рассматривает

ответ

1

Удалить одинарные кавычки из "--exclude='{}'".format(...) используйте "--exclude={}".format(...)

Когда вы не используете shell=True вам не нужно использовать побеги. Кавычки имеют смысл только для оболочки, они удаляются перед выполнением команды для создания списка аргументов. Если вы используете кавычки в списке аргументов для Popen, они передаются как буквы qoute, поэтому в вашем случае вы должны исключить 'Build.tar.gz', включая кавычки.

+0

Это сработало спасибо – Ephreal

Смежные вопросы