Функция os. startfile

funkciya os startfile Системные инструменты параллельного выполнения

Команда start оказалась настолько удобной, что в последние версии Python была добавлена функция os.startfile, которая по сути выполняет те же действия, что и команда DOS start, выполняемая с помощью функции os.system, и действует, как если бы на указанном файле был выполнен двойной щелчок. Например, следующие вызовы имеют похожий эффект:

>>> os.startfile(‘lpcodereadme.txt’)

>>> os.system(‘start lp-code-readme.txt’)

На моем компьютере, работающем под управлением Windows, оба вызова открывают текстовый файл в программе Блокнот (Notepad). Однако, в отличие от второго способа, функция os.startfile, не предоставляет возможности задержать закрытие запущенного приложения (что достигается передачей ключа /WAIT команде DOS start) и не позволяет получить код завершения приложения (возвращаемый функцией os.system).

В последних версиях Windows следующий вызов также имеет похожий эффект, потому что в них для выполнения команд задействуется реестр (однако такая форма вызова блокируется до закрытия программы просмотра файлов, как при использовании команды start /WAIT):

>>> os.system(‘lpcodereadme.txt’) # команду startможно не указывать

Это довольно удобный способ открытия произвольных документов и медиафайлов, но имейте в виду, что функция os.startfile работает только в Windows, потому что она использует реестр Windows, чтобы определить, как открывать файл. Существуют и другие, еще более запутанные и непереносимые способы запуска программ, включая инструменты в пакете PyWin32, который мы не будем рассматривать здесь. Если вам требуется обеспечить переносимость своих сценариев, используйте инструменты запуска программ, из числа представленных выше, такие как функции os.popen или os.spawnv. Но еще лучше напишите модуль, скрывающий тонкости за переносимым интерфейсом, как показано в следующем, заключительном разделе.

Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011

Оцените статью
Секреты программирования
Добавить комментарий