и после этого файл script1.py был выполнен интерпретатором. При этом я не хочу писать полный путь к скрипту. Я настроил системную переменную PATH, так, чтобы в ней лежал путь к каталогу, в котором находится интерпретатор. Скрипт лежит в той же самой папке. И когда я просто запускаю интерактивный режим командой «python» из любого каталога, все работает хорошо.
Но когда я пишу команду, приведенную выше, скрипт не запускается. То есть переменная PATH работает при поиске интерпретатора и не работает при поиске скрипта. Как мне сделать, чтобы я мог без написания полного пути к файлу запускать его?
Ответы (3 шт):
Как я понял, вам нужно указать дефолтную директорию при запуске командной строки.
- запускаете regedit
- откроваете ветку HKEY_CURRENT_USERSoftwareMicrosoftCommand Processor
- добавляете новый параметр с типом REG_SZ (ПКМ > new > String Value) и присваиваете ему название Autorun
- в поле value data ( второе поле) вписываете нужный вам путь к директории где обычно у вас лежат скрипты, к примеру CD C:
- сохраняете
Теперь при открытии cmd у вас по-дефолту будет открываться заданный путь
Командная строка | Изучаем Python
Проще всего переустановить питон и при установке поставить галочку «добавить в Path».
Ну а руками попробуй в переменную Path добавить эти 2 строчки
C:UsersТвой_ПользовательAppDataLocalProgramsPythonPython36-32Scripts C:UsersТвой_ПользовательAppDataLocalProgramsPythonPython36-32
Где «Твой_Пользователь» имя твоего пользователя.
А для скрипта добавь в PATH переменную «my_script» и путь к твоему файлу «script1.py». После этого будет все четко работать по
python %my_script%
Чтобы запустить some-command.py Питон скрипт, который в одной из %PATH% директорий лежит, используя только имя команды (из любой директории):
C:> some-command
нужно добавить .py расширение в %PATHEXT% переменную окружения:
C:> echo %pathext%
и убедиться, что настроено приложение для запуска *.py файлов, к примеру, pylauncher ( py.exe — вместе с Питоном поставляется):
С:> assoc .py С:> ftype Python.File
Если у вас несколько версий Питона установлено, то добавьте shebang на самом верху Питон-скрипта, чтобы указать желаемую версию Питона:
#!/usr/bin/env python3
Если директория присутствует в sys.path списке, то можно -m форму использовать, чтобы Питон модуль как скрипт запустить (из любой директории):
C:> py -m some_module
в этом случае some_module.py не обязан в %PATH% лежать.
Источник: husl.ru
Как открыть текстовый файл hello.py через командную строку )при установленном питоне)?
К сути, программированием решил заняться для себя, просто хобби, начать решил с Python, купил книгу Саммерфилда, установил питон 3.7 с ориг. сайты, галочку со средой поставил при установке, как и в книге, я создал в блокноте файл и назвал его hello.py, зашел в cmd(запускаю файл не в командной строке интерпретатора), переменные среды Path я указал, и саму папку питона и скрипты:
006 Как запускать Python программы в Windows
C:UsersfinniAppDataLocalProgramsPythonPython37-32> C:py5egpython hello.py
«C:py5egpython» не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
Второй вариант из книги:
C:py5eg>C:UsersfinniAppDataLocalProgramsPythonPython37-32python.exe hello.py
C:UsersfinniAppDataLocalProgramsPythonPython37-32python.exe: can’t open file ‘hello.py’: [Errno 2] No such file or directory
Я понимаю, что можно запустить интепретатор в cmd и работать так, но почему у меня не получается просто через cmd?
- Вопрос задан более трёх лет назад
- 2294 просмотра
Решения вопроса 0
Ответы на вопрос 3
Программист
Имя к файлу должно быть полным, и не должно содержать пробелов (потому что пробел считается разделителем параметров и путь начинает обрабатываться как 2 параметра) либо параметры с пробелами заключаются в кавычки.
Ответ написан более трёх лет назад
Нравится 1 Комментировать
Укажите полный путь к интерпретатору и исполняемому файлу.
Например:
C:UsersfinniAppDataLocalProgramsPythonPython37-32python.exe C:UsersfinniDesktophello.py
Ответ написан более трёх лет назад
Нравится 1 2 комментария
Источник: qna.habr.com
Python-сообщество
- Начало
- » Python для новичков
- » питон + cmd с аргументами
#1 Окт. 17, 2021 23:04:05
питон + cmd с аргументами
Есть программа, которая работает через командную строку.
Запуск программы –> C:WindowsSystem32cmd.exe /k fdsinit
После этого появляется какое-то “специальное” окно командной строки
Цель: из питона запустить программу, перейти в нужную директорию (или сразу открыть в нужной директории), ввести команду на обработку файла.
я могу открыть прогу через такой код
import subprocess subprocess.run(‘C:WindowsSystem32cmd.exe /k fdsinit’, shell=True)
через какие аргументы можно выполнить сразу три действия (открыть прогу, перейти в нужную директорию, запустить команду)?
#2 Окт. 17, 2021 23:23:18
питон + cmd с аргументами
Получится ли как к примеру я блокноту скармливаю файл с помощью os
import os os.system(‘notepad.exe D:my_doc.txt’)
#3 Окт. 18, 2021 10:31:51
питон + cmd с аргументами
xam1816
import os
os.system(‘notepad.exe D:my_doc.txt’)
Делаю аналогичный пример — не работает
import os os.system(‘C:WindowsSystem32cmd.exe /k fdsinit cd..’)
работает такой пример, с аргументом /k, но с двумя /k уже не работает:
import os os.system(‘cmd.exe /k cd..’)
Отредактировано Pacifist (Окт. 18, 2021 10:34:41)
#4 Окт. 18, 2021 11:07:26
питон + cmd с аргументами
d:temp>test2.cmd www
«программа запущена с аргументом: www»
Введите пароль: 123
«пароль: 123»
d:temp>echo qwerty | test2.cmd www
«программа запущена с аргументом: www»
Введите пароль: «пароль: qwerty «
d:temp>
Pacifist
через какие аргументы можно выполнить сразу три действия (открыть прогу, перейти в нужную директорию, запустить команду)?
что мешает сразу перейти в нужную директорию перед вызовом программы?
d:temp>test2.cmd
current dir: d:temp
d:temp>cd ..
d:>temptest2.cmd
current dir: d:
d:>cd test
d:test>d:temptest2.cmd
current dir: d:test
d:test>
[code python][/code]
Бериегите свое и чужое время.
Отредактировано PEHDOM (Окт. 18, 2021 11:17:15)
#5 Окт. 18, 2021 12:12:25
питон + cmd с аргументами
Pacifist
Делаю аналогичный пример — не работает
Я предполагал не открывать cmd.exe, а сразу типа
os.system(‘D:fds.exe D:файл.fds’)
Отредактировано xam1816 (Окт. 18, 2021 12:12:44)
#6 Окт. 18, 2021 15:47:50
питон + cmd с аргументами
Спасибо за развернутый ответ. Пока не смог понять как мне это использовать
xam1816
Я предполагал не открывать cmd.exe, а сразу типа
Для начала работы именно нужно запустить cmd.exe через fdsinit.bat
Потом перейти в нужную директорию (или сразу в ней запустить)
Потом команда с именем фала
#7 Окт. 18, 2021 16:25:02
питон + cmd с аргументами
Pacifist
Для начала работы именно нужно запустить cmd.exe через fdsinit.bat
так fdsinit этобатник?вот это я туплю, вот что значит 4 дня выходных . Так шож вы бабушку лохматите то? его же можно как угодно поправить, батник в студию, будм смотреть .
Pacifist
Спасибо за развернутый ответ. Пока не смог понять как мне это использовать
в первом случае батник спрашивает ввод с клавиатуры, первый пример мы вводим, второй — через перенаправление echo qwerty | test2.cmd www просто подставляем из командной строки пароль qwerty, ничего не вводя с клавы.
Во втором случае сначала меняем текущую директорию, потом вызываем батник, батник считает текущей не ту директорию в которой находиться, а ту из которой запущен.
нафига вы вообще дергаете C:WindowsSystem32cmd.exe? почему не вызвать сразу батник?
[code python][/code]
Бериегите свое и чужое время.
Отредактировано PEHDOM (Окт. 18, 2021 16:35:34)
#8 Окт. 18, 2021 16:34:47
питон + cmd с аргументами
import os from subprocess import Popen, PIPE # changes directory to directory where input file is saved. base = (os.getcwd()) string = f»/4″ os.chdir(string) cmd = ‘cmd.exe’ p = Popen(cmd, stdin=PIPE , stdout=PIPE, bufsize=0, shell=True) p.stdin.write(b»fdsinit*desired folder name*») p.stdin.write(b»fds_local -p 2 -o 2 *filename*.fds «) p.stdin.close() p.wait();
в интернете нашел
#9 Окт. 18, 2021 16:55:43
питон + cmd с аргументами
PEHDOM
так fdsinit этобатник?вот это я туплю, вот что значит 4 дня выходных . Так шож вы бабушку лохматите то? его же можно как угодно поправить, батник в студию, будм смотреть .
fdsinit.bat:
чего-то не хочется в него лезть
потом придется постоянно динамически менять?
xam1816
fds_local -p 2 -o 2 *filename*.fds
пример как раз для меня) спасибо! Именно эту команду мне нужно запустить, отредактировав индексы и имя файла в питоне.
Буду пробовать
#10 Окт. 18, 2021 17:15:35
питон + cmd с аргументами
Pacifist
чего-то не хочется в него лезть
потом придется постоянно динамически менять?
зачем? ставите условие если нет аргументов то просто батник работает как есть, если есть аргумент парсите его
типа
if «%1″==»» (
echo нормальная работа, запрашиваем команды и т.д.
) else (
echo автоматическая работа, вызываем fds.exe c параметрами передаными в команной строке
)
[code python][/code]
Бериегите свое и чужое время.
Отредактировано PEHDOM (Окт. 18, 2021 17:16:28)
Источник: python.su