【发布时间】:2019-01-01 17:03:30
【问题描述】:
我想将本地文件复制到谷歌云存储桶。我可以在命令行中使用gsutil cp 来做到这一点。但我想在 python 中执行此操作,因此要在 python 中运行类似的命令,我使用以下行:
os.system('gsutil cp '+ '/MY-LOCAL-FILE-NAME' +' gs://My-Bucket-Name')
它将文件发送到存储桶,但它是一个空文件!!! 我也尝试了 python 子进程但同样的问题。 我认为问题在于字符串连接。当我使用整个字符串时,它可以工作并将文件发送到存储桶,但是当我在 "subprocess" 或 "os.system" 中连接子字符串时,它只发送一个空文件,这太奇怪了,有什么想法吗???
【问题讨论】:
-
文件与您的 python 脚本位于同一路径这一事实毫无意义。 当前工作目录意味着一切。
-
谢谢,我其实知道。例如,当我使用简单的 os.system('cp ...') 命令时它可以工作,但是对于 os.system('gsutil cp...') 我得到上述错误,我不知道为什么使用 gsutil 它没有不行吗?
-
您有什么理由不为此目的使用 Python 库吗? cloud.google.com/storage/docs/reference/…
-
我同意 @ScottMcC 的观点,使用 Python 的 GCS 库会容易得多。有使用命令行的理由吗?
-
我希望我的代码尽可能独立于平台,这就是我尽量避免使用 GCS 库的原因。实际上我发现这是因为 python/subprocess/os.system 字符串连接的问题。当我在没有任何连接(+)的情况下使用整个字符串时,它可以工作并将文件发送到存储桶,但是当我将子字符串连接在一起时,它不起作用,它只是将一个空文件发送到存储桶,任何关于原因的想法都很奇怪?谢谢
标签: python google-cloud-platform cp gsutil os.system