Ваш пример кода смешивать или Python
код и Bash
код, чтобы он не может работать в Python Shell
ни в Bash Shell
:)
На Linux, и работает в Bash
в виде двух команд:
(Windows, вероятно, не имеет printf
команда)
printf "file '%s'\n" *.wav > input.txt
ffmpeg -f concat -i input.txt -c copy output.mpeg
Python
версия, которая не нуждается в Bash
:
#!/usr/bin/env python3
import os
import sys
import glob
import subprocess
# get Current Working Directory (CWD)
pwd = os.getcwd()
# get list of files
if len(sys.argv) > 1:
#filenames = sys.argv[1:] # Linux
filenames = glob.glob(sys.argv[1]) # Windows
else:
filenames = glob.glob("*.mpg")
#print(filenames)
# generate "input.txt" file
with open("input.txt", "w") as f:
for name in filenames:
f.write("file '{}/{}'\n".format(pwd, name))
#f.write("file '{}'\n".format(name))
# run ffmpeg
subprocess.run('ffmpeg -f concat -i input.txt -c copy output.mpeg', shell=True)
И вы можете запустить его с или без аргумента, т.е.. "*.wav"
python script.py *.wav
(тестировался только на Linux)
printf
(и другие Bash
команды) для Windows: GnuWin32
Подробнее о GnuWin32
это не код Python, так почему вы запускаете его в Python Shell? Это код Bash, поэтому запустите его в консоли/терминале Bash. – furas
@furas Спасибо за ваш ответ. Я нашел аналогичный код в библиотеке ffmpeg, где я его запустил, не могли бы вы мне помочь? – SMH
Используете ли вы Linux (или Mac)? Вы знаете, что такое Баш? – furas