#python #subprocess
#python #подпроцесс
Вопрос:
У меня есть папка, которая содержит :
bd.txt
/Config
/DLL
/Rapports
bx1478.ini
ARCH.zip
Я хочу создать архив без ini и zip-файлов.
Я пытаюсь, как показано ниже, но получаю пустой архив :
import subprocess
SZ_PATH_TMP = '../tmp'
SZ_PATH_WORK = '../work'
full_label_version = 'ARCH'
subprocess.call(['7z', 'a', SZ_PATH_TMP '/' full_label_version '.zip', SZ_PATH_WORK '/* -xr!*.zip -xr!*.ini'])
Комментарии:
1. Вы используете относительные пути. Вы уверены, что они правильные и что вы запускаете свой скрипт Python из правильного местоположения. Попробуйте установить рабочий каталог для вызова подпроцесса в соответствующий каталог.
2. Да, относительные пути работают нормально, потому что, когда я удаляю -xr!*.zip -xr!*.ini, генерация работает, но со всеми файлами
Ответ №1:
Когда вы передаете список аргументов subprocess
, каждый параметр должен быть отдельным элементом списка.
import subprocess
SZ_PATH_TMP = '../tmp'
SZ_PATH_WORK = '../work'
full_label_version = 'ARCH'
subprocess.call(
['7z', 'a',
SZ_PATH_TMP '/' full_label_version '.zip',
SZ_PATH_WORK '/*, '-xr!*.zip', '-xr!*.ini'])
Если вы не знаете точно, как оболочка разбивает командную строку на аргументы, возможно, передайте всю команду в виде строки в shlex.split()
Комментарии:
1. Если вы используете Windows, я не уверен, что
shlex
там работает правильно. (Возможно, «правильно» даже не определено в Windows.)