Разархивируйте ZIP-файл в определенную папку, используя: zip-модуль - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь разархивировать ZIP-файл в определенный путь к папке:

http://erlang.org/doc/man/zip.html#unzip-1

:zip.unzip(zip_path, {cwd: "/tmp/test-extracted/"})

** (SyntaxError) test.exs:18: syntax error before: cwd
    (elixir) lib/code.ex:677: Code.require_file/2

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Как это:

:zip.unzip(String.to_charlist(zip_path), cwd: "/tmp/test-extracted/")
0 голосов
/ 11 мая 2018

Здесь есть несколько синтаксических ошибок.

1) Чтобы вызвать функцию, определенную в модуле, используйте Module:Function(Arguments).

zip:unzip(Zipfile).  % not zip.unzip()

2) Токены начинаются со строчной буквы и называются atom s, которые являются лишь некоторыми литералами. Вы должны использовать переменные для первого аргумента unzip/2.

Zipfile = "/path/to/your/zipfile.zip".
zip:unzip(Zipfile).

3) Для второго аргумента unzip/2, давайте посмотрим, как понять документ, который вы публикуете:

unzip(Archive, Options) -> RetValue  

Это сигнатура функции: два переменных аргумента и возвращаемое значение

Archive = file:name() | binary()

Первый аргумент должен иметь тип file:name() или двоичный

Options = [Option]

Options аргумент должен быть списком.

Option = {file_list, FileList} |
    keep_old_files |
    verbose |
    memory |
    {file_filter, FileFilter} |
    {cwd, CWD} 

Существует несколько форм списка, в том числе тот, который вам нужен: {cwd, CWD}, который является кортежем, первый элемент которого - атом cwd.

У нас есть все знания, чтобы правильно звонить zip:unzip/2:

Zipfile = "/path/to/your/zipfile.zip".
MyCwd = "/path/to/working_dir/".
zip:unzip(ZipPath, [{cwd, MyCwd}]). 
...