Форум сайта python.su
0
Всем здравствуйте. Ещё раз. Вчера задал этот вопрос, но моя тема куда-то делась :(
Написал модуль cnc.py для быстрой генерации УП для станков с ЧПУ. Одной из ключевых там является функция GPrint(), которая выводит команду в выходной файл (если _OutputMode==_OUT_TO_FILE), файл, создаваемый по умолчанию (если _OutputMode==_OUT_TO_UNK), или добавляет строку в заданный список (если _OutputMode==_OUT_TO_LIST). Хендл файла или список содержится в глобальной внутренней переменной модуля _Output:
_OUT_TO_UNK = -1
_OUT_TO_FILE = 0
_OUT_TO_LIST = 2
_Output=_Self=None #задаётся другой процедурой или с помощью _SetSelfOutput()
_OutputMode=_OUT_TO_UNK
def GPrint(Line):
global _Output,_OutputMode
if _OutputMode==_OUT_TO_FILE:
print(Line,file=_Output)
elif _OutputMode==_OUT_TO_LIST: _Output.append(Line)
else:
_SetSelfOutput()
print(Line,file=_Output)
E:\WORK\G_CODE\GCodeGen>python test.py
Traceback (most recent call last):
File "test.py", line 1, in <module>
from cnc import *
File "E:\WORK\G_CODE\GCodeGen\cnc.py
print(Line,file=_Output)
^
SyntaxError: invalid syntax
E:\WORK\G_CODE\GCodeGen>python test.py >report.txt
Офлайн
14
по фотографии не лечим
Офлайн
0
А я никакой фотографии и не предоставлял, если что-то не ясно в моём вопросе, объясните что именно.
Офлайн
0
Я локализовал ошибку, он ругается на file=handle в функции print():
import sys
Line="QWERTY"
print(Line,file=sys.stdout)
D:\KDV\Work\GCodeGen>python _.py
File "_.py", line 3
print(Line,file=sys.stdout)
^
SyntaxError: invalid syntax
Офлайн
14
Нет, не отменили. Даже если бы отменили — это не давало бы SyntaxError.
Скорее всего вы запускаете python 2.X. Каким образом — вам виднее.
Офлайн
0
Установил опять Питон 3.1.3, но там оказалась таже проблема. Но я разобрался, как это происходит.
Если просто запустить скрипт с командной строки, или через полное имя программы python.exe, то он нормально выполнится:
>test.py
>C:\Python31\python.exe test.py
Если запустить скрипт так:
python.exe test.py
то вылезит SyntaxError на print(…, file=…).
Т.е, это есть БАГ и никак иначе! Остаётся только задуматься, так ли уж безупречен код питона… :/
Офлайн
2
Сделайте
$ python.exe -V
Офлайн
33
… и он напечатает что-то типа “Python 2.6.1” :)
Офлайн
0
Вот же ж %%%%%%%! Оказывается в системе уже стоял Python 2.6.2, который остался в PATH после установки последней версии (я умолчал про то, что компьютер-то не мой). Насчёт бага погорячился, беру слова обратно. И крыша у меня на месте (ву-у-хх!)
Александр Кошелев, Lexander, большое Вам спасибо!
Офлайн