Если вы хотите пойти по пути subprocess.call()
, это должно выглядеть так, как в Windows:
import subprocess
subprocess.call(('cmd', '/C', 'start', '', FILE_NAME))
Вы не можете просто использовать:
subprocess.call(('start', FILE_NAME))
, потому что start
не является исполняемым файлом , а является командой программы cmd.exe
. Это работает:
subprocess.call(('cmd', '/C', 'start', FILE_NAME))
, но только в том случае, если в FILE_NAME нет пробелов.
Хотя метод subprocess.call
правильно задает параметры, команда start
имеет довольно странную синтаксис, где:
start notes.txt
делает что-то еще:
start "notes.txt"
В первой цитируемой строке следует указать заголовок окна. Чтобы заставить его работать с пробелами, мы должны сделать:
start "" "my notes.txt"
, что и делает код сверху.