gpt4 book ai didi

python - 不要使用 subprocess.check_output() 引用命令的参数

转载 作者:行者123 更新时间:2023-12-04 22:52:43 25 4
gpt4 key购买 nike

我正在尝试通过 subprocess.check_output() 将 glob 模式传递给 ffmpeg .这似乎有一个问题,因为如果模式在引号内传递,输出就是我所期望的。
例子:

subprocess.check_output([ffmpeg_path, '-pattern_type', 'glob', '-i', '/tmp/*?(jpg|jpeg)'...])
这导致:

/tmp/*?(jpg|jpeg): No such file or directory.


如果通过 shell 运行此命令,这与我收到的“不匹配”错误不同。似乎正在发生的事情是命令正在组成
ffmpeg -pattern_type 'glob' -i '/tmp/*?(jpg|jpeg)'
我想要的是(注意缺少引号)
ffmpeg -pattern_type glob -i /tmp/*?(jpg|jpeg)
值得注意的是,我正在传递目录,所以 directory + '/*?(jpg|jpeg)'是传递给 check_output() 的列表中的内容.这可能是问题的一部分。
我将如何防止这种情况,或者我将如何传递所需的原始参数?
在开发机器上运行时的 ffmpeg 版本:
ffmpeg version 4.4.1 Copyright (c) 2000-2021 the FFmpeg developers
built with Apple clang version 13.0.0 (clang-1300.0.29.3)
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.4.1_5 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-avresample --enable-videotoolbox
并在部署时使用 ffmpeg amd64 静态构建。

最佳答案

您的通配符模式使用 bash扩展名,ffmpeg可能不支持。
相反,使用多个 -i选项,带有标准通配符。

subprocess.check_output([ffmpeg_path, '-pattern_type', 'glob', '-i', '/tmp/*.jpg', '-i', '/tmp/*.jpeg', ...])
没有添加实际报价。当您使用 shell=False ,列表元素按原样直接传递给程序,无需通过 shell,因此不需要引用。文档没有准确地解释它——他们的意思是这就像你引用了所有的论点一样。

关于python - 不要使用 subprocess.check_output() 引用命令的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70947508/

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