subprocess.Popen (["open", "target.mkv"], shell = True не удается открыть указанный файл - PullRequest
0 голосов
/ 30 августа 2018

Я учусь subprocess открывать мультимедийные файлы ".mkv",

Во-первых, я тестирую:

In [25]: subprocess.Popen(
    ...:     ["open", "/Volumes/Transcend/Downloads/The.Adventure.of.English.Ep4.mkv"], shell=True)
    ...:     
Out[25]: <subprocess.Popen at 0x10b063908>
In [26]: Usage: open [-e] [-t] [-f] [-W] [-R] [-n] [-g] [-h] [-s <partial SDK name>][-b <bundle identifier>] [-a <application>] [filenames] [--args arguments]

Все, что произошло, было сообщением об использовании.

Тогда я попробовал:

In [27]: subprocess.Popen('open "/Volumes/Transcend/Downloads/The.Adventure.of.English.Ep4.mkv"', shell=True)
Out[27]: <subprocess.Popen at 0x10b114208>

Сработало и сразу открыл целевой файл,

Я заметил, что первый параметр [] предпочтительнее, чем последний параметр "string".

В чем проблема с параметром [], не позволяющим открыть файл?

1 Ответ

0 голосов
/ 30 августа 2018

Из конструктора subprocess.Popen ( Документы ):

Аргумент оболочки (по умолчанию False) указывает, следует ли использовать оболочку в качестве программы для выполнения. Если shell равен True, рекомендуется передавать аргументы в виде строки, а не последовательности.

...