Откройте файл из модуля ОС в python [в Linux, Ubuntu 20.04]

Модуль ОС в Windows или MacOS имеет следующее;

os.system("start APPLICATION.EXTENSION filename") 

Откроет имя файла (я имею в виду фактически открыть, а не открыть python, как если бы вы открыли правой кнопкой мыши), если он находится в той же папке, что и файл python в Windows. Версия MacOS;

os.system("open filename")

То, что я прошу, является эквивалентом Linux. Если вы знаете о другом модуле или методе, я открыт для чего угодно.

Все, что я смог найти в Интернете, это обычное

file = filepath
open(file)
read(file)

И это абсолютно не то, чего я хочу достичь. Любая помощь очень ценится, вы могли бы сказать, что эта проблема доходит до меня.


person Will Johnson    schedule 03.07.2020    source источник
comment
Я знаю, что вы имеете в виду, но я также не знаю точно, чего вы стремитесь достичь. Этот тип open запустит графический интерфейс или другое приложение, связанное с расширением файла или самим файлом. Так что Python ничего об этом не узнает. Кроме того, если семантика open в Windows не изменилась недавно, она может быть проблематичной. В пакетном файле DOS, если вы запускаете файл text.txt при открытом Блокноте, вызов сразу же возвращается к пакету. Если Блокнот не был открыт и его нужно было запустить, пакет блокируется на этой строке до тех пор, пока Блокнот не будет закрыт.   -  person JL Peyret    schedule 03.07.2020
comment
Вместо того, чтобы спрашивать, может ли это сделать только Python, сначала проверьте, что сам Linux поддерживает в этом отношении, как это делается, кто предоставляет услугу (вероятно, это не было бы для вас полезно, если бы только файловый менеджер дистрибутива поддерживал эту функциональность). Добро пожаловать на борт, и извините тех, кто чувствовал, что им абсолютно необходимо проголосовать против. Некоторые люди на SO могут немного раздражать своим анонимным голосованием без обратной связи. Но я боюсь, что на данном этапе это не вопрос Python, это вопрос ОС.   -  person JL Peyret    schedule 03.07.2020
comment
Это не имеет ничего общего с Python, так как os.system просто запускает команду оболочки, используя оболочку по умолчанию. Наличие в каком-либо конкретном дистрибутиве Linux эквивалента Windows start или macOS open не зависит от Python или любого другого языка программирования.   -  person chepner    schedule 03.07.2020


Ответы (1)


Я использую Linux Mint 19.3 и сделал это с помощью subprocess Popen.

import subprocess
subprocess.Popen(['APP_COMMAND', '~/file.txt'])

Дополнительную информацию и варианты можно найти: Вызов внешней команды из Python

person Mina    schedule 03.07.2020