Использование subprocess для открытия файла

Есть данная строка в коде:

subprocess.run(file_for_open, shell=True, encoding='UTF-8')

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


Ответы (1 шт):

Автор решения: eri

Файл надо открывать через start

import subprocess, os, platform

filepath = "D:\\Ucheba\\Новая папка\\Линукс 1\\LR1.pdf"

if platform.system() == 'Darwin':       # macOS
    subprocess.call(('open', filepath))
elif platform.system() == 'Windows':    # Windows
    os.startfile(filepath)
else:                                   # linux variants
    subprocess.call(('xdg-open', filepath))

Или к одному стилю

import subprocess, platform

filepath = "C:\\Users\\eri\\Downloads\\Заявление на получение КЭП.pdf"

if platform.system() == 'Darwin':       # macOS
    subprocess.call(('open', filepath))
elif platform.system() == 'Windows':    # Windows
    subprocess.call(('start', "", filepath), shell=True)
else:                                   # linux variants
    subprocess.call(('xdg-open', filepath))
→ Ссылка