Python 3.x gsutil在subprocess.Popen中出现语法错误
在我的情况下,我想上传所有的pdf文件到谷歌云存储 因此,我将google sdk与pytho子流程一起用于实践,而不是“google.cloud.storageAPI” 但下面有一个错误: 代码:Python 3.x gsutil在subprocess.Popen中出现语法错误,python-3.x,subprocess,gsutil,google-cloud-sdk,Python 3.x,Subprocess,Gsutil,Google Cloud Sdk,在我的情况下,我想上传所有的pdf文件到谷歌云存储 因此,我将google sdk与pytho子流程一起用于实践,而不是“google.cloud.storageAPI” 但下面有一个错误: 代码: from subprocess import Popen def subprocess_cmd(command): print(f'$>: {command}') process = Popen(command, stdout=subp
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-mcp-r./source/*(.pdf |.pdf)gs://”
子进程_cmd(命令)
错误:
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>'
/bin/bash:-c:第0行:意外标记“(”附近的语法错误
/bin/bash:-c:第0行:`gsutil-mcp-r./source/*(.pdf |.pdf)gs://'
您应该改用这一行:
command = "gsutil -m cp -r ./source/{*.pdf,*.PDF} gs://<bucket_name>"
command=“gsutil-mcp-r./source/{*.pdf,*.pdf}gs://”
请参阅关于
bash
通配符中的{}(花括号)
部分。您还可以查看关于gsutil
通配符。无法使用/*(.pdf |.pdf)运行命令
,该命令将无法正常工作。我已尝试在我的一侧复制它,但我无法使用它。考虑到这一点,将GCS与Python一起使用的受支持方式是使用Google Cloud Client Library for Python,而不是运行gsutil。请您澄清为什么不使用它?但是gsutil-m cp-r./source/*(.pdf |.pdf)gs://
是在TerminalHi@EEEEH上工作的。它可能工作,但不受支持-可能是因为gsutil
基于Unix环境-可能工作不正常。除此之外,请您澄清为什么不使用Google Cloud Client Library for Python而不是Python子进程?嗨@gso_gabriel,我没有使用客户端库,因为我只想知道子流程。