Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 36, средняя оценка - 4.97
Hretgir
439 / 79 / 2
Регистрация: 25.01.2012
Сообщений: 3,091
Записей в блоге: 23
#1

Не запускается в CMD скрипт - Python

18.06.2013, 19:09. Просмотров 5954. Ответов 33
Метки нет (Все метки)

скрипт рабочий, работает из редактора и просто при двойном клике на файле, в директории. а вот в cmd никак. нужно запустить в конечном счёте это дело в консоли приложения, не знаю можно-ли, но пока так вот.
Кликните здесь для просмотра всего текста
дело в том, что разработчик станка "кулибин", посоветовал мне, так как его управляющая программа не очень и я хотел сделать свою, переписать одну функцию с python, на своем языке программирования. станок управляется ещё с python. с функцией я кое как разобрался, но тут понял что это мне ничего не даст. а нужно сделать консольное приложение, открыть в консоли cmd, запустить в этой консоли интерпретатор python, запустить там же эту программу с этой функцией, всё это программой freepascal, и этой же программой, через ее консоль вводить аргументы для программы на python, точнее ее функции. в разделе Lazarus мне очевидно уже не хотят помогать, по причине моих личных качеств, судя по всему информация о которых ими долго собиралась и анализировалась. переход на личности, со стороны администрации критиковать нельзя, потому всё хорошо, но мне надо лучше: взять управление продуктом, который я приобрел по наивной вере в отечественного производителя и в то, что всё плохое-случайность.
может разработчик и прав, но это слишком сложная для меня задача, мне проще сделать приложение и с формой и с консолью, в консоли запустить этот скрипт и отправлять ему своей программой аргументы для функции

http://www.cyberforum.ru/python/thread1572898.html
вот код
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# -*- coding: cp1251 -*-
import d2xx         # Библиотеку качаем с bleyer.org/pyusb
import time
c=2
d=d2xx.listDevices(d2xx.OPEN_BY_DESCRIPTION)
d2xx.listDevices()
h = d2xx.open(0)
h.setBitMode(255,1) # Подготовили порт к работе
def step(n,d):      # Определим функцию шага по выбранной оси
    """step(axis,direction): 20 micron step by axis 1, 2 or 3 in direction 1 or 0"""
    r=0
    if n==1:
        b=16
    elif n==2:
        b=4
    elif n==3:
        b=20
    global c
    a=chr(b+d+c)
    r=h.write(a)    
    time.sleep(0.04)
    c=2-c
    return r
                    # Конец служебной части.
                    # Далее пишем что-то свое, например вот такую программу, делающую 1 оборот туда и обратно по оси z:
t=range(50)
for n in t:
    step(3,1)
for n in t:
    step(3,0)
 
h.close()           # Напоследок закрываем порт
скриншот cmd ниже
0
Миниатюры
Не запускается в CMD скрипт  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2013, 19:09
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Не запускается в CMD скрипт (Python):

Не запускается скрипт
number=23 running=True while running: guess=int(input('введите...

Не запускается скрипт: Invalid character in identifier
Доброго времени суток! Помогите в начинаниях) получаю такую ошибку. среда...

Начинающий. Скрипт не запускается ни через путь, ни через import
Собственно говоря, вот и вся трамблемма. Суть такова, что как и многие...

Запускается cmd
Такая проблема. ОС Вин 8.1. Периодически (каждые 20-40 мин) запускается...

Не запускается cmd на Windows 7
Доброго времени суток Пишу программу-обертку в которой через c# запускаю...

33
dhxdzjbr
96 / 81 / 5
Регистрация: 06.05.2013
Сообщений: 242
18.06.2013, 20:27 #2
Он тебе пишет, что ты синтаксическую ошибку допустил в программе, нужно файл смотреть.
0
Hretgir
439 / 79 / 2
Регистрация: 25.01.2012
Сообщений: 3,091
Записей в блоге: 23
18.06.2013, 20:38  [ТС] #3
но файл работает, его код в сообщении. не знаю ...может в первой строке вот это должно быть #! ...
0
dhxdzjbr
96 / 81 / 5
Регистрация: 06.05.2013
Сообщений: 242
18.06.2013, 21:01 #4
Это называется shebang, вообще на сколько мне извесно его нужно прописывать в заголовке скрипта, только если вы используется unix систему.
1
funtaps
15 / 15 / 2
Регистрация: 14.06.2013
Сообщений: 45
18.06.2013, 21:06 #5
С файлом все ок.
Запускаешь ты его не так. Надо после слова python НЕ нажимать Enter, а нажимать пробел и далее адрес файла. В одну строку. А потом Enter.
Примерно так
Bash
1
python C:\Users\Андрей\Documents\scripty\Script1.py
(Если я не ошибся перепечатывая адрес файла со скриншота - должно сработать)
1
Hretgir
439 / 79 / 2
Регистрация: 25.01.2012
Сообщений: 3,091
Записей в блоге: 23
18.06.2013, 21:32  [ТС] #6
Цитата Сообщение от funtaps Посмотреть сообщение
(Если я не ошибся перепечатывая адрес файла со скриншота - должно сработать)
не ошибся , работает, сначала выдал что девайс не найден, потом я его включил, работает . теперь надо чуть переписать эту программу на Python, и передавать в неё параметры функции через командную строку, как-то, именно поэтому я и хотел сначала в командной строке запустить чисто питон, чтобы в ней открылся типа шел

Добавлено через 10 минут
вот тут вот ещё по этому вопросу, но ближе к среде разработки
0
funtaps
15 / 15 / 2
Регистрация: 14.06.2013
Сообщений: 45
18.06.2013, 22:04 #7
Чтобы передавать в скрипт данные с помощью консоли, надо запускать скрипта так
Bash
1
python C:\Users\Андрей\Documents\scripty\Script1.py 111 222 "ASDQWE"
В самом же скрипте сверху написать
Python
1
import sys
, а потом для доступа к аргументам использовать конструкцию sys.argv[ИНДЕКС] где ИНДЕКС = 0 для "C:\Users\Андрей\Documents\scripty\Script1.py"; 1 для "111"; 2 для 222; 3 для "ASDQWE"
Например вызов команды выше, при тексте скрипта
Python
1
2
import sys
print sys.argv[2]
выведет 222

Добавлено через 2 минуты
Так же для отладки можно запускать скрипт с ключом -i
Bash
1
python -i C:\Users\Андрей\Documents\scripty\Script1.py
Этот ключ по завершению скрипта не завершит процесс питона, и выдаст шел. Соответственно можно будет посмотреть значения переменных, попробовать какой-нибудь код и т.п.
2
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
18.06.2013, 22:10 #8
Цитата Сообщение от Hretgir Посмотреть сообщение
нужно запустить в конечном счёте это дело в консоли приложения, не знаю можно-ли, но пока так вот
чтобы запустить в интерпретаторе, нужно весь код туда скопировать
1
Hretgir
439 / 79 / 2
Регистрация: 25.01.2012
Сообщений: 3,091
Записей в блоге: 23
19.06.2013, 18:32  [ТС] #9
funtaps, я впечатлен, спасибо огромное, вечером буду пробовать

Добавлено через 11 часов 0 минут
Цитата Сообщение от accept Посмотреть сообщение
чтобы запустить в интерпретаторе, нужно весь код туда скопировать
а если я создам консольное приложение, на своём языке, вызову в эту консоль командную строку, запущу прогу на Python в этой командной строке, и через эту же командную строку буду передавать аргументы в функцию Python? так можно?
0
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
19.06.2013, 19:50 #10
Цитата Сообщение от Hretgir Посмотреть сообщение
и через эту же командную строку буду передавать аргументы в функцию Python? так можно?
можно, но ты сразу запускаешь скрипт с аргументами, а не передаёшь их после запуска, а в скрипте берёшь их через sys.argv

пример
t.py
Python
1
2
3
4
5
6
#!/usr/bin/env python3
 
import sys
 
argc = len(sys.argv)
print(argc, sys.argv)
t.c
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
    const char *cmd = "python3 t.py 123 456 789";
 
    printf("run: %s\n", cmd);
    system(cmd);
    printf("exit\n");
    return 0;
}
Код
[guest@localhost c]$ .ansi t.c -o t
[guest@localhost c]$ ./t
run: python3 t.py 123 456 789
4 ['t.py', '123', '456', '789']
exit
[guest@localhost c]$
1
Hretgir
439 / 79 / 2
Регистрация: 25.01.2012
Сообщений: 3,091
Записей в блоге: 23
19.06.2013, 20:11  [ТС] #11
Цитата Сообщение от accept Посмотреть сообщение
а в скрипте берёшь их через sys.argv
а скрипт не обгонит программу передающую аргументы? а то будет ещё выполнять по две операции по старым аргументам. он как-то узнает, что пришли новые аргументы?
0
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
19.06.2013, 20:32 #12
Цитата Сообщение от Hretgir Посмотреть сообщение
а скрипт не обгонит программу передающую аргументы?
программа приостанавливается, пока вызов не завершится
1
Hretgir
439 / 79 / 2
Регистрация: 25.01.2012
Сообщений: 3,091
Записей в блоге: 23
19.06.2013, 21:48  [ТС] #13
не могу найти
sys.argv
, для FreePascal нет такого в учебниках, и по Lazarus в учебниках нету фряшных,. и вобщем нашёл для Python-sys.argv[] это путь к текущему модулю, то есть получается, что, то, что должно быть на другом языке должно быть модулем. это не нужно, а нужно: запускается программа на другом языке, запускает скрипт Python, скрипт, пусть и не сразу, получает от программы на другом языке, шаг за шагом, аргументы для выполнения. вот это нужно. то-есть: программа на другом языке может иметь интерфейс оконный, кнопки, таблицы, что угодно, но оконный интерфейс. а как это будет выглядеть если её сделать модулем? она должна открывать файлы, сэйвить. да и хлопотно это, для моего уровня: писать модули для Python на FreePascal в Lazarus.

Добавлено через 35 минут
Цитата Сообщение от funtaps Посмотреть сообщение
Чтобы передавать в скрипт данные с помощью консоли, надо запускать скрипта так
Bash
1
python C:\Users\Андрей\Documents\scripty\Script1.py 111 222 "ASDQWE"
В самом же скрипте сверху написать
Python
1
import sys
, а потом для доступа к аргументам использовать конструкцию sys.argv[ИНДЕКС] где ИНДЕКС = 0 для "C:\Users\Андрей\Documents\scripty\Script1.py"; 1 для "111"; 2 для 222; 3 для "ASDQWE"
Например вызов команды выше, при тексте скрипта
Python
1
2
import sys
print sys.argv[2]
выведет 222

Добавлено через 2 минуты
Так же для отладки можно запускать скрипт с ключом -i
Bash
1
python -i C:\Users\Андрей\Documents\scripty\Script1.py
Этот ключ по завершению скрипта не завершит процесс питона, и выдаст шел. Соответственно можно будет посмотреть значения переменных, попробовать какой-нибудь код и т.п.
вобщем теоретически, я могу запустить скрипт с консоли своего приложения написанного на freepascal? вроде да, если передам в консоль параметры командной строки. вроде где-то я видел это в учебниках, мельком. далее нужно в функцию скрипта передавать аргументы, теоретически это можно с помощью той-же консоли. вобщем надо пробовать. если я кого-то не понял, извиняйте. тут нужна пауза для практики. вобшем попробую, потом если что вопросы напишу.
0
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
19.06.2013, 22:08 #14
Цитата Сообщение от Hretgir Посмотреть сообщение
и вобщем нашёл для Python-sys.argv[] это путь к текущему модулю
это список аргментов командной строки, с которыми запущен скрипт; первый элемент списка - путь запуска скрипта

Цитата Сообщение от Hretgir Посмотреть сообщение
для FreePascal нет такого в учебниках, и по Lazarus в учебниках нету фряшных
они и не нужны, но они есть: http://www.cyberforum.ru/pascal/thread193915.html, yandex. аргументы в паскале

Цитата Сообщение от Hretgir Посмотреть сообщение
а нужно: запускается программа на другом языке, запускает скрипт Python, скрипт, пусть и не сразу, получает от программы на другом языке, шаг за шагом, аргументы для выполнения. вот это нужно. то-есть: программа на другом языке может иметь интерфейс оконный, кнопки, таблицы, что угодно, но оконный интерфейс. а как это будет выглядеть если её сделать модулем?
шаг за шагом не передашь, только все сразу
чтобы шаг за шагом передавать, нужно делать цикл в скрипте, который ожидает команды из потока ввода (интерактивный скрипт)
теоретические варианты
либо ты его постоянно запускаешь с разными аргументами командной строки
либо есть файл
либо есть сокет (паскаль сможет открыть сокет в линуксе?)
0
Hretgir
439 / 79 / 2
Регистрация: 25.01.2012
Сообщений: 3,091
Записей в блоге: 23
20.06.2013, 20:37  [ТС] #15
(паскаль сможет
открыть сокет в линуксе?)
не знаю, у меня windows, что то я видел вроде такое. завтра буду пробовать что-то, жаль конечно, медленно, но это мой дневной лимит времени.

Добавлено через 21 час 58 минут
всё, я понял, что это не по мне , слишком много времени уходит, буду пробовать связать через файл, создаю новую тему, если что-прошу извинить
0
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
20.06.2013, 21:04 #16
Цитата Сообщение от Hretgir Посмотреть сообщение
буду пробовать связать через файл
для проверки файла нужно обращаться к диску, а это затратно
0
Hretgir
439 / 79 / 2
Регистрация: 25.01.2012
Сообщений: 3,091
Записей в блоге: 23
20.06.2013, 22:02  [ТС] #17
Цитата Сообщение от accept Посмотреть сообщение
для проверки файла нужно обращаться к диску, а это затратно
мне пример скинули для другого языка программирования, там через инструменты ОС это делается (в этом разделе я тему открыл тоже, по Python) , затратно то-что запись в файл, незнаю как это в железе-нагрузка на опр участок диска, но цель: выточивать матрицы, а не готовые изделия (знал бы-не купил бы этот продукт, полусамодельный-полбеды, но наши разработчики и в ПО хромают. то что всё снаружи, продукт сырой, уголки, стандартные шпильки в качестве валов-пол беды: ПО ударило ниже паха ).

Не по теме:

не то чтобы осуждаю разработчиков, но увы, решали они проблему удаления пыли и стружки из-под фрезы, обсуждали улитки охлаждения от серверов. мне, как сварщику смешно было читать, я им отписался, что купил зарядку блок-питания автомобильных аккумуляторов (когда идея на кону-средств не жалко), купил улитку от лады 08, в сборе продаётся, но я этого не знал: гуглил улитки и всё время выскакивала лада 08, пылесос для настольного маленького фрезера-отличный получился. потом они нашли где-то в инетах направляющую для станка Open-Ball (я тему создавал в разделе робототехника), отписываются в комментах ЖЖ что дорого точить, я предложил вариант без выточки направляющей, ничем не хуже того, что они продают сейчас, даже учитывая коэфициент трения-лучше, не то для них, сомнения, а попробовать-купить два метра уголка и метр швеллера-все затраты на спаренные направляющие, нет, сомнения их берут. и ПО у них такое-же, нет сэйва проделаной работы над 3д изделием, а это дооолгая песня, поэтому и фрезировать буду исключительно матрицы. буду делать коробку передач, исполнительный механизм для робота, там шестерни не разсоединяются, и один двигатель на все механизмы, и вообще достаточно удачно, только потом дорабатывать ещё буду, и недостатки конечно есть, сейчас так хотя-бы. мне хотя бы через файл, а то лето пройдёт, а я ничего не сделаю, потому что я в компасе 3д не всё ещё спроектировал, мне поточить, отлить, чтобы размеры, прочность, точность прикинуть, и доделывать в компасе, по ходу всё , валом



Добавлено через 9 минут
мне накладно не будет, если как UI предложил, это всё для контроллера шаговых двигателей. только в Python надо ещё так-же. и связать две проги через файл
0
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
20.06.2013, 22:49 #18
так а что мешает сделать интерактивный скрипт ?
пример интерактивной программы - cmd.exe: она в цикле ожидает ввод от пользователя, он что-то вводит, нажимает <Enter>, она что-то делает, потом снова ожидает ввод от пользователя
0
Hretgir
439 / 79 / 2
Регистрация: 25.01.2012
Сообщений: 3,091
Записей в блоге: 23
20.06.2013, 22:58  [ТС] #19
Цитата Сообщение от accept Посмотреть сообщение
так а что мешает сделать интерактивный скрипт
дело в том, что 3д модель выточить-это передать на контроллер мегабайты G-кода, и записывать или запоминать номер последнего шага (вдруг свет выключат). в ручную я их вводить не хочу: это будут уже годы, чтобы выточить механизм (проще руками, но не факт-коробка передач требует точности деталей).
0
accept
4833 / 3254 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
21.06.2013, 05:42 #20
интерактивный скрипт ожидает ввода от пользователя, но пользователя может заменить программа
например, почтовый сервер: ты можешь подключиться к нему клиентом, который войдёт и скачает почту, а можешь вручную подключиться и посылать команды, при этом команды одни и те же (определяются почтовым протоколом)

Цитата Сообщение от Hretgir Посмотреть сообщение
дело в том, что 3д модель выточить-это передать на контроллер мегабайты G-кода, и записывать или запоминать номер последнего шага (вдруг свет выключат)
ну, для этого у тебя должен быть исполнитель (это что-то вроде робота), который умеет посылать любые команды станку
а потом для исполнителя пишется программа, которая управляет исполнителем определённым образом
для одной детали - одна программа, для другой детали - другая программа
0
21.06.2013, 05:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.06.2013, 05:42
Привет! Вот еще темы с решениями:

Не запускается cmd.exe
Доброго времени суток! Прошу сразу не пинать с Win 2003 имею дело всего 3й...

Не запускается через cmd
Прописываю в консоле net start mysql, выводит Неправильное имя службы. Для...

Запускается cmd и открывается сайт
Здравствуйте! При входе в Windows открывается Chrome и отображается сайт ....

Cmd-скрипт с параметрами
Всем, привет. Нужно написать cmd-скрипт, создающий каталог с именем,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru