Python3 Subprocess.run не может найти файл относительной ссылки - PullRequest
0 голосов
/ 09 января 2019

Я использую subprocess.run (), который использует аргумент, который ссылается на файл как "./0.mkv"

Он сообщает, что не может найти файл "./0.mkv". Нужно ли указывать полный путь или есть способ заставить ./ ссылаться правильно?

Или, может быть, это что-то совсем другое, я не уверен.

Это фактический код:

temp_file_path = "./0.mkv"
final_file_path = "./0hardsubs.mkv"

cmd = ['ffmpeg', '-i', f'"{temp_file_path}"', \
       '-filter_complex', f'"subtitles=\'{temp_file_path}\'"', \
       f'"{final_file_path}"', '-y', '-loglevel', 'warning', '-stats']

subprocess.run(cmd)

Это вывод:

"./0.mkv": No such file or directory

1 Ответ

0 голосов
/ 10 января 2019

Оказывается, это было что-то еще. Я попытался print(os.path.getsize(temp_file_path)) и получил правильный вывод, чтобы Python мог ясно видеть файл.

Как только я удалил двойные кавычки вокруг ввода ffmpeg, отфильтровал и вывел все, все работало нормально. Не уверен, как это возможно, но я полагаю, это особенность subprocess.run, которая автоматически очищает аргументы?

Для всех, кто хочет, вот окончательный вывод:

temp_file_path = "./0.mkv"
final_file_path = "./0hardsubs.mkv"

cmd = ['ffmpeg', '-i', f'{temp_file_path}', \
       '-filter_complex', f'subtitles=\'{temp_file_path}\'', \
       f'{final_file_path}', '-y', '-loglevel', 'warning', '-stats']

subprocess.run(cmd)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...