gpt4 book ai didi

python 子进程不能很好地使用 gsutil 复制/移动命令

转载 作者:行者123 更新时间:2023-11-28 17:37:30 27 4
gpt4 key购买 nike

在 Python 中,我使用子进程调用 gsutil 复制和移动命令,但目前无法选择多个扩展。

相同的 gsutil 命令在终端上有效,但在 python 中无效:

cmd_gsutil = "sudo gsutil -m mv gs://xyz-ms-media-upload/*.{mp4,jpg} gs://xyz-ms-media-upload/temp/"
p = subprocess.Popen(cmd_gsutil, shell=True, stderr=subprocess.PIPE)
output, err = p.communicate()

如果说有四种文件类型要移动但存储桶是空的,则终端返回的 gsutil 错误是:

4 files/objects could not be transferred.

而通过子流程运行时返回的错误是:

1 files/objects could not be transferred.

很明显,子进程以某种方式破坏了命令...

我总是可以低效地为每种文件类型重复命令,但我更愿意深入了解它!

最佳答案

看来,/bin/sh(默认 shell)不支持 {mp4,jpg} 语法。传递 executable='/bin/bash',将其作为 bash 命令运行。

您也可以在没有 shell 的情况下运行命令,例如,使用 globfnmatch 模块来获取文件名以构建 gsutil 命令。注意:在这种情况下,您应该将命令作为列表传递。

关于python 子进程不能很好地使用 gsutil 复制/移动命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28942055/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com