Python 子进程不会运行命令

问题描述 投票:0回答:1

由于某种原因,我有一个子进程命令行,它没有在其下面运行子进程命令行并执行应有的处理。

 import subprocess
 import os

 os.chdir('/home/linux/Trial/')
 a = open('Attempts.txt', 'r')
 b = a.readlines()
 a.close()
 for c in range(0, len(b)-1):
     words = list(b[c].split(" "))
     d = len(words)
     e = words[d-1]
     f = b[c].replace(e, 'Hiccup' + str(c) + '.mp4')
     words[d-1] = 'Hiccup' + str(c) + '.mp4'
     print(f)
     command = 'ffmpeg', '-i', words[2], '-ss', words[4], '-to', words[6], '-c:v copy -a copy', words[11]
     print(command)
     subprocess.run(['ffmpeg', '-i', words[2], '-ss', words[4], '-to', words[6], '-c:v copy -a copy', words[11]])   

当我运行以下代码时,我得到以下输出:

 ffmpeg -i test.mp4 -ss 00:00:00 -to 00:02:34 -c:v copy -a copy Hiccup0.mp4
 ('ffmpeg', '-i', 'test.mp4', '-ss', '00:00:00', '-to', '00:02:34', '-c:v copy -a copy', 'Hiccup0.mp4')

我什么也没得到。当我检查没有创建名为 Hiccup0 的新文件时。我已经安装并更新了 ffmpeg-python(今天早上确定了)。

什么给予。我认为这应该有效,但事实并非如此。

python ffmpeg subprocess
1个回答
0
投票

我没有用

ffmpeg
进行测试,但我很确定
subprocess.run()
会偶然发现双参数
'-c:v copy -a copy'
。这些被转义,因此它们成为被调用进程的one参数。

将以下最小示例与几乎相同的

echo
命令调用进行比较:

subprocess.run(['echo', '-n', '"hello world"'])
# output: "hello world"<no newline>
subprocess.run(['echo', '-n "hello world"'])
# output: -n "hello world"<newline>
© www.soinside.com 2019 - 2024. All rights reserved.