Как открыть ярлык python

Python: запуск файла ярлыка.lnk (и ожидание)

Мне кажется, что subprocess.call(«path.lnk») и subprocess.call(‘start «» «path.lnk»‘) в настоящее время не работают в Python 3.x для Windows 10. Раньше они работали, или, по крайней мере, я клянусь, что они работали, но мне не на чем тестировать.

[WinError 193] %1 is not a valid Win32 application. 
FileNotFoundError: [WinError 2] The system cannot find the file specified. 

Если я открою cmd.exe и попробую path.lnk и/или запущу path.lnk, оба будут работать отлично. Эти команды терпят неудачу только при запуске из subprocess.call(/Popen) . os.startfile(«path.lnk») полностью функционален, но имеет серьезное ограничение, заключающееся в невозможности дождаться завершения процесса. Метода .wait() нет. Из документов:

startfile() возвращается сразу после запуска связанного приложения. Нет возможности ждать, пока приложение закроется, и нет возможности получить статус выхода приложения.

Python39\lib\subprocess.py", line 1420 in _execute_child hp, ht, pid, tid = _winapi.CreateProcess(executable, args, 

в настоящее время это работает, только если вы включаете shell=True в вызов. Я подозреваю, что это связано с изменением Windows, а не Python с 2011 года, хотя я не могу этого доказать. Я даже не уверен, на какой версии Python я тестировал это в 2011 году (и я даже не помню, чтобы писать этот ответ:))

Я попытался включить это следующими четырьмя способами: subprocess.call([‘»path.lnk» shell=True’]) , который вернул: [WinError 5] Access is denied (из строки 1420, как обычно) Я поставил shell=True прямо в строку выше, это должно быть сделано так:

subprocess.call(['start "" "path.lnk"', start=True]) 

Это запустит ярлык, но имеет те же ограничения, что и другие команды, не ждите. Как запустить ярлык Windows с помощью Python Этот пост имеет answer, в котором упоминается использование этого фрагмента кода для достижения функциональности .wait() -esq.

import win32com.shell.shell as shell import win32event se_ret = shell.ShellExecuteEx(fMask=0x140, lpFile=r"D:\games\blender.lnk", nShow=1) win32event.WaitForSingleObject(se_ret['hProcess'], -1) 

Для меня это на самом деле не ждет. пожимает плечами Я также нашел этот сообщение суперпользователя с соответствующий ответ:

subprocess.call('cmd.exe /c "path.lnk"') 

Это работает так же, как os.startfile, но на самом деле не ждет завершения процесса и, похоже, не допускает никакого ожидания.

Читайте также:  Program using set in java

Стоит отметить, что во всех случаях, когда я получал FileNotFoundError, я пытался поменять местами мои / и , используя путь r и просто для забавного форматирования строки с помощью %s.

Я чувствую искушение создать файл .bat, который запускает ярлык и ждет, а затем запускает летучую мышь из subprocess.call для достижения желаемого поведения. Однако это кажется грязным и кажется ненужным. Если другие решения не могут быть предложены, я попробую это и предложу свой пакетный скрипт в ответ, если он работает.

Источник

Как создать ярлык запуска скрипта python?

Написал python скрипт для себя. И каждый раз запускать IDLE не хочется.
Собрать через pyinstaller не хочу, часто вношу изменения, скриптом буду пользоваться только я.
У скрипта есть свой интерфейс, консоль не используется.

Как-то можно, создать ярлык, который запустить скрипт .py ?

Создать bat (если это в windows) который будет выполнять команду вроде c:\py\python.exe myscript.py и сделать ярлык для bat.

gscraft

paramin, чтобы скрыть консоль, создайте ярлык запуска напрямую, через pythonw.exe или свяжите pythonw.exe с файлами расширения *.pyw . При запуске из BAT не получится.

Gennady S, paramin, Чтобы скрыть консоль Python, нужно использовать pythonw, а чтобы скрыть консоль bat надо написать start pythonw test.py

gscraft

Во-первых, можно ассоциировать Python-сценарии с интерпретатором (инсталлятор это делает, если не ошибаюсь). От администратора в Windows (pythonw — для запуска без консоли):

assoc .py=PythonScript ftype PythonScript=path-to\python.exe "%1" %* assoc .pyw=PythonScriptWindow ftype PythonScriptWindow=path-to\pythonw.exe "%1" %*

5f66003cd4a26888664301.png

— в таком случае любой py / pyw будут запускаться двойным щелчком.
Во-вторых, запуск через интерпретатор можно прописать в ярлыке, в его свойствах:

В-третьих, как советуют рядом, создать bat файл, в котором будет по сути то, что в ярлыке, но это повлечет за собой окно терминала.
В-четвертых, pyinstaller — неплохой вариант в целях автономности приложения. Сборка проходит быстро, ее можно настроить под локальное размещение и в один клик.

Источник

как создать ярлык на скрипт .py?

По исходному сообщению непонятно, что тебе нужно. Если добавить .py-файлу executable bit, он уже будет исполняемым. На него можно сделать символьную ссылку из любого места. Если хочется добавить его в список приложений, то можно создать .desktop-файл.

mkdir ~/.scripts mv папка-где-скрипт/скрипт.py ~/.scripts echo 'export PATH=$PATH:$HOME/.scripts' >> ~/.bashrc source ~/.bashrc скрипт.py 

Ну и, конечно же, сделать исполняемым.

в каком формате это сделать? (.sh, .bin..)

для KDE: ПКМ→создать→ссылка_на_приложение

Ну и там вбивай полный путь к файлу.

В .py И не забудь о первой строчке в скрипте

1) для создания ярлыка в линуксе нужно создать текстовый файл «программа.desktop» и разместить в папке /usr/share/applications или скинуть на рабочий стол:

[Desktop Entry] Version=1.0 Terminal=false Exec=/opt/программа/программа.sh Icon=/opt/программа/view/программа.ico Type=Application Categories=Network; StartupNotify=true Name=Программа GenericName=Клевая программа Comment=Делает одно, другое, третье.. Вощем, класс 

2) для создания ярлыка в винде нужно создать хитрый файл «программа.lnk»
3) для создания запускаемого файла в линуксе нужно написать простенький скрипт «программа.sh»:

#!/bin/sh DIRFILE=`readlink -e "$0"` CURFILE=`basename "$DIRFILE"` CURDIR=`dirname "$DIRFILE"` cd $CURDIR /usr/bin/python ./программа.py 

и в свойствах файла пометить его как «запускаемый»
4) для создания запускаемого файла в винде нужно написать простенький скрипт «программа.bat»:

@echo off for /f %%i in ("%0") do set curpath=%%~dpi cd /d %curpath% set PYTHON=.\python2.7\bin\python.exe "%PYTHON%" .\программа.py 

Готов ответить на дополнительные вопросы.

Источник

Python-сообщество

[RSS Feed]

  • Начало
  • » Python для новичков
  • » Как посредством python создать ярлык? (.lnk)

#1 Июль 13, 2016 17:10:32

Как посредством python создать ярлык? (.lnk)

Понадобилось мне с помощью питона 3 создавать, а лучше просто редактировать ярлыки. Допустим, есть у меня игра World of Warcraft. Моя задача создать ярлык этой игры. Гугл молчит, выдаёт всякую хрень, хотя я нашел 1 способ, но он для ветки 2.4+

Выкладывайте, если кто что знает, буду весьма благодарен

#2 Июль 13, 2016 18:05:07

JOHN_16 От: Россия, Петропавловск-Камчатск Зарегистрирован: 2010-03-22 Сообщения: 3292 Репутация: 221 Профиль Отправить e-mail

Как посредством python создать ярлык? (.lnk)

_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

#3 Июль 13, 2016 18:13:57

Как посредством python создать ярлык? (.lnk)

Это тот самый pywin32, который я не смог поставить на 3 питон.

#4 Июль 13, 2016 18:31:07

Как посредством python создать ярлык? (.lnk)

import ctypes kdll = ctypes.windll.LoadLibrary("kernel32.dll") kdll.CreateSymbolicLinkA("d:\\test.txt", "d:\\test_link.txt", 0) 

#5 Июль 13, 2016 19:44:09

Как посредством python создать ярлык? (.lnk)

#6 Июль 13, 2016 20:09:36

Как посредством python создать ярлык? (.lnk)

После установки winshell он требует модуль win32con, который в своё время находится в pywin32, который как было выше написано, на 3 питон не ставится. Вот же веселуха

#7 Июль 13, 2016 20:23:13

Как посредством python создать ярлык? (.lnk)

Проблема с pywin32 решилась, почему устанавливаться через pip и whl он не хочет я беспонятия. Пришлось качать exe файл и устанавливать вручную — отсюдова. Теперь думаю разберусь.

#8 Июль 14, 2016 09:46:21

Как посредством python создать ярлык? (.lnk)

Ну что же, проблема решена. Если кому интересно решение:
Использовалась библиотека pywin23 — взять можно тут, если вдруг не получается установить через pip или whl.
Сам пример создания ярлыка:

import os, winshell from win32com.client import Dispatch # Получаем путь до рабочего стола. desktop = winshell.desktop() # Соединяем пути, с учётом разных операционок. path = os.path.join(desktop, "Fox.lnk") # Задаём путь к файлу, к которому делаем ярлык. target = r"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" # Назначаем путь к рабочей папке. wDir = r"C:\Program Files (x86)\Mozilla Firefox" # Путь к нужной нам иконке. icon = r"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" # С помощью метода Dispatch, обьявляем работу с Wscript (работа с ярлыками, реестром и прочей системной информацией в windows) shell = Dispatch('WScript.Shell') # Создаём ярлык. shortcut = shell.CreateShortCut(path) # Путь к файлу, к которому делаем ярлык. shortcut.Targetpath = target # Путь к рабочей папке. shortcut.WorkingDirectory = wDir # Тырим иконку. shortcut.IconLocation = icon # Обязательное действо, сохраняем ярлык. shortcut.save() 

#9 Авг. 31, 2020 11:01:54

Как посредством python создать ярлык? (.lnk)

import easy_shortcut as es # pip install easy_shortcut
es.shortcut(r“C:\Users\User\Video\my.lnk”,r“C:\Users\User\Desktop\my.exe”,r“C:\Users\User\Desktop”,r“C:\Users\User\Images\Icon.ico”)

Источник

Оцените статью