В моем случае я хочу загрузить весь PDF-файл в облачное хранилище Google.

Поэтому для практики я использую google-sdk с подпроцессом python вместо google.cloud.storage API.

Но ниже есть ошибка:

Код:

from subprocess import Popen

def subprocess_cmd(command):
    print(f'$>: {command}')
    process = Popen(command,
                    stdout=subprocess.PIPE,
                    executable='/bin/bash',
                    shell=True)

    proc_stdout = process.communicate()[0].strip()
    print(proc_stdout.decode("utf-8"))

Функция Exec :

command = "gsutil -m cp -r ./source/*(.pdf|.PDF) gs://<bucket_name>"
subprocess_cmd(command)

Ошибка :

/bin/bash: -c: line 0: syntax error near unexpected token `('
/bin/bash: -c: line 0: `gsutil -m cp -r ./source/*(.pdf|.PDF) gs://<bucket_name>'
0
EEEEH 8 Сен 2020 в 07:21

1 ответ

Лучший ответ

Вместо этого вы должны использовать эту строку:

command = "gsutil -m cp -r ./source/{*.pdf,*.PDF} gs://<bucket_name>"

См. Раздел { } (curly brackets) в этом документе о подстановочных знаках bash. Вы также можете просмотреть этот документ о gsutil подстановочных знаках.

1
asbovelw 8 Сен 2020 в 12:41