如果文件不存在,则毫无例外地从 GCS 中删除

ezv*_*ine 2 linux shell gsutil google-cloud-platform

我正在通过 python 调用 shell 脚本。

在我正在使用的脚本gsutil rmgsutil cp命令中。

但是,每当这两个命令中的任何一个在不存在的 gcp 路径上运行时,都会出现错误。

例如:当我尝试时:

gsutil rm -r gs://some-bucket/somepath-not-present/
Run Code Online (Sandbox Code Playgroud)

我收到错误:

CommandException: 1 files/objects could not be removed.
Run Code Online (Sandbox Code Playgroud)

最终脚本的返回码是1。尽管我的代码本来可以正常执行。我希望脚本在找不到路径时不会给出错误。

有什么办法可以绕过这个。我已经尝试||过linux,但似乎不起作用。

pet*_*ina 5

如果您使用gsutil另一个可能受 打印的异常影响的脚本gsutil,您可以简单地尝试将 stderr 重定向到 /dev/null ,如下所示:

gsutil rm -r gs://some-bucket/somepath-not-present/ 2> /dev/null
Run Code Online (Sandbox Code Playgroud)

但是,请注意,此时您将开始忽略该命令生成的任何错误。如果您这样做echo $?,您仍然会收到错误代码,1该代码可以告诉您文件不存在或发生其他异常。

编辑:

如果你想以退出代码 0 退出脚本,你可以这样做

gsutil rm -r gs://some-bucket/somepath-not-present/ || exit 0
Run Code Online (Sandbox Code Playgroud)

或者,如果您只想命令返回 0,您可以使用

gsutil rm -r gs://some-bucket/somepath-not-present/ || true
Run Code Online (Sandbox Code Playgroud)