gsutil的subprocess.Popen出现语法错误

问题描述

就我而言,我想将所有pdf文件上传到Google云端存储。

因此,我将带有pytho子过程的google-sdk代替“ 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"))

执行功能

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>'

解决方法

您应该改用此行:

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

有关{ } (curly brackets)通配符,请参见this document中的bash部分。您还可以看到this document关于gsutil通配符。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...