gpt4 book ai didi

python:subprocess.check_output 如何创建调用?

转载 作者:行者123 更新时间:2023-11-28 17:26:48 25 4
gpt4 key购买 nike

我正在尝试使用 mediainfo 读取视频文件的持续时间。这个 shell 命令有效

mediainfo --Inform="Video;%Duration/String3%" file

并产生类似的输出

00:00:33.600

但是当我尝试用这一行在 python 中运行它时

subprocess.check_output(['mediainfo', '--Inform="Video;%Duration/String3%"', file])

整个 --Inform 被忽略,我得到了完整的 mediainfo 输出。

有没有办法查看subprocess构造的command有什么问题?

或者谁能告诉我哪里出了问题?

最佳答案

尝试:

subprocess.check_output(['mediainfo', '--Inform=Video;%Duration/String3%', file])

您的 python 字符串中的 " 可能会传递给 mediainfo,它无法解析它们并将忽略该选项。

这类问题通常是由 shell 命令需要/吞噬各种特殊字符引起的。 " 之类的引号通常会被 bash 由于 shell 魔术而删除。相比之下,python 不需要它们来进行魔术,因此会按照您使用它们的方式复制它们。如果不需要它们,为什么要使用它们?(好吧,呃,因为 bash 让你相信你需要它们)。

例如,在 bash 中我可以做到

$ dd of="foobar"

它会写入名为 foobar 的文件,并吞下引号。

在 python 中,如果我这样做

subprocess.check_output(["dd", 'of="barfoo"', 'if=foobar'])

它将写入名为 "barfoo" 的文件,保留引号。

关于python:subprocess.check_output 如何创建调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38223625/

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