Я рассматриваю структуру как для (если) A else B, так и для (if) -sese является специальным if-else , примерно . Это может помочь понять еще .
A и B выполняются не более одного раза, что аналогично структуре if-else.
for (if) может рассматриваться как специальное условие if, которое выполняет цикл для выполнения условия if. Как только условие , если выполнено, A и нарушают ; Остальное , Б.
Если у вашего jar-файла уже есть абсолютный путь, как показано, это особенно просто:
cd /where/you/want/it; jar xf /path/to/jarfile.jar
То есть, у вас есть оболочка, запущенная Python для изменения каталога, а затем запускает извлечение.
Если ваш файл jar еще не имеет абсолютного пути, вам необходимо преобразовать относительное имя в абсолютное (добавив к нему префикс пути к текущему каталогу), чтобы jar
мог найти его после изменение каталога.
Единственные проблемы, о которых нужно беспокоиться, - это такие вещи, как пробелы в именах путей.
I don't think the jar tool supports this natively, but you can just unzip a JAR file with "unzip" and specify the output directory with that with the "-d" option, so something like:
$ unzip -d /home/foo/bar/baz /home/foo/bar/Portal.ear Binaries.war
Не могу. вы просто меняете рабочий каталог в скрипте Python, используя os.chdir (target)
? Я согласен, я не вижу никакого способа сделать это из самой команды jar.
Если вы не хотите постоянно менять каталог, сохраните текущий каталог (используя os.getcwd ()
]) в переменной, а затем измените ее обратно.
os.chdir (target)
? Я согласен, я не вижу никакого способа сделать это из самой команды jar.
Если вы не хотите постоянно менять каталог, сохраните текущий каталог (используя os.getcwd ()
]) в переменной, а затем измените ее обратно.
os.chdir (target)
? Я согласен, я не вижу никакого способа сделать это из самой команды jar.
Если вы не хотите постоянно менять каталог, сохраните текущий каталог (используя os.getcwd ()
]) в переменной, а затем измените ее обратно.
Если это личный сценарий, а не тот, который вы планируете распространять, может быть проще написать для этого функцию оболочки:
function warextract { jar xf $1 $2 && mv $2 $3 }
, которую затем можно было бы вызывать из python, например итак:
warextract /home/foo/bar/Portal.ear Binaries.war /home/foo/bar/baz/
Если вам действительно нравится, вы можете использовать sed для анализа имени файла из пути, чтобы вы могли вызвать его с помощью
warextract /home/foo/bar/Portal.ear /home/foo/bar/baz/Binaries.war
. Я оставлю это в качестве упражнения для читателя , хотя.
Конечно, поскольку это сначала извлечет .war в текущий каталог, а затем переместит его, у него есть возможность перезаписать что-то с тем же именем, где вы находитесь.
Смена каталога, извлечение это, и cd-ing назад немного чище, но я все время использую такие маленькие однострочные функции оболочки, когда хочу уменьшить беспорядок в коде.