Пайтон скрипты - ликбез

Автор calc4fem, 29 февраля 2012, 07:37

0 Пользователи и 1 гость просматривают эту тему.

calc4fem

Вопрос состоит в следующем. Как работают пользовательские функции на пайтон? Есть ли хотя бы простейший пример (например пользовательская функция user123(a,b) user123=a+b?
Должен ли быть пайтон определенной версии установлен в системе отдельно или не обязательно?
Вопрос такой собственно. Есть до кучи пайтон скриптов которые читают текстовые файл, производят определенные действия и записывают другой текстовый файл. Можно ли (и сложно ли) сгоношить интерфейс из ООо чтобы не набирать каждый раз в командных строках однотипные команды?

Yakov

Цитата: calc4fem от 29 февраля 2012, 06:37Должен ли быть пайтон определенной версии установлен в системе отдельно или не обязательно?
В Windows - версии Python идёт в комплекте с OpenOffice.
Даже в облегчённой версии OOo4Kids он есть: http://wiki.ooo4kids.org/index.php/Main_Page/ru

calc4fem

к сожалению очень мало информации по пайтон. намедни разобрался с тем как засунуть пайтон скрипт в тело файла (раззипировать, создать папки, вставить скрипт и прописать определенные вещи в Meta http://www.ruscript.net/scripts/30/
проблема в том что пайтонисты так пишут что их трудно разобрать не зная языка. Какие все таки общие правила написания скрипта? почему некоторые скрипты пайтон не видит? чесное слово - проспонсирую любого толкового человека кто напишет нормальную вводную статью для чайников для myooo.ru

Hasim

Если вы
1) прочитали 2-3 толстенных книги по программированию на Python (коих великое множество)
2) и по ним уже научились писать и читать код Python,
3) а также статью "Python and OpenOffice.org" на http://wiki.openoffice.org/wiki/Python,
то больше вам ничего и не надо знать для того, чтобы успешно писать на Python для OpenOffice.org.


calc4fem

#4
я не читал например книг по OpenOffice Basic и даже охотно соглашусь с мнением о том что я его не знаю по большому счету. Но это не мешает мне использовать его в повседневной жизни - для написания собственных функций или простых макросов.
Я едва ли когда то буду понимать все конструкции языка пайтон но тем не менее простые я могу понять даже без книг (например - вот подключение библиотеки, а вот - функция и т.д.)
Ваша ссылка более всего по связке пайтон и uno (насколько я понял ранее при беглом просмотре)
а мне бы пока хотя бы без uno - просто понять возможности и ограничения функционирования макросов в пайтоне.
вот например есть уже готовый скрипт который читает текстовый файл с диска, потом его перерабатывает и создает новый в той же папке. Я могу запустить этот скрипт из пайтон. Чтобы в общем случае запустить этот скрипт надо сначала установить пайтон. Потом выполнить определенные действия и запустить соотв. команду. В ООо пайтон уже есть и он у многих установлен. Могу ли я грубо говоря просто создать документ с одной кнопкой которая как раз и будет этот скрипт запускать? в этом случае я могу дать его коллегам, и тд. без лишних объяснений как пользоваться.
воторой вопрос - могу ли я написать в пайтон функцию
например Function sum_of_two_nums(a,b) = a+b End Function
можно конечно попробовать методом тыка но для того сообщество и есть. в общем кто напишет человеческим языком с простыми примерами статью я скину 30-50 баксов на мобильный. это конечно не доход, но малое приятное к большому полезному.

Yakov

Цитата: calc4fem от 16 ноября 2012, 15:14Могу ли я грубо говоря просто создать документ с одной кнопкой которая как раз и будет этот скрипт запускать?
Да.

Hasim

#6
Цитата: calc4fem от 16 ноября 2012, 15:14вот например есть уже готовый скрипт который читает текстовый файл с диска, потом его перерабатывает и создает новый в той же папке. Я могу запустить этот скрипт из пайтон. Чтобы в общем случае запустить этот скрипт надо сначала установить пайтон. Потом выполнить определенные действия и запустить соотв. команду.
...
воторой вопрос - могу ли я написать в пайтон функцию
например Function sum_of_two_nums(a,b) = a+b End Function
А зачем вам OpenOffice в этом случае?
Скрипт просто запускается из командной строки, можно, конечно, запустить и из OpenOffice через Shell или макросом на кнопке, или пунктом меню, но смысла в этом нет.
Если бы вы использовали Python для обработки данных в OpenOffice (читает данные из документа OpenOffice, обрабатывает их методами, недоступными, например, из OOoBasic, и затем записывает обработанные данные в тот же или другой документ OpenOffice), тогда да, этим стоило бы заниматься.
Но вы же пытаетесь использовать OpenOffice просто как оболочку для запуска скриптов Python, которые к обработке данных из документов OpenOffice никакого отношения не имеют  (ваши вопросы можно понять только так).

calc4fem

#7
Цитата: Hasim от 16 ноября 2012, 17:10
Скрипт просто запускается из командной строки, можно, конечно, запустить и из OpenOffice через Shell или макросом на кнопке, или пунктом меню, но смысла в этом нет.

знаете, я много раз в жизни это делал и каждый раз снова обнаруживаю две вещи 1) что я не помню как 2) что у меня пайтон не установлен. первое потому что я не занимаюсь программированием постоянно, поэтому силюсь вспомнить как чего с какими ключами запускать. хотя конечно это просто.
но тут есть еще такое обстоятельство - я не могу кому то (среднестатистическому пользователю) это порекомендовать. потому что слишком много для начинающего если речь идет об одном действии (скачать - поставить - прописать путь - запустить cmd.exe ). В сущности при всей мощи и поплярности пайтона в широком смысле языком для масс он не стал. и даже при всем обилии скриптов на все случаи жизни - они чаще всего играют роль сырцов для других программистов (майкросовт  :) ) а не для массового пользователя. В связи с этим мой вопрос - любой ли скрипт можно подвесить к интерфейсу в ООо или все таки не любой. Чисто формальные это операции (в том случае если например речь не идет о связи с самим ООо или с какими то тяжелыми системными и сетевыми задачами) или нужно для этого каждый скрипт серьезно изучать и править? Я поясню что меня в основном волнуют научные и математические библиотеки и операции с файлами на диске типа читать-писать.


Цитата: Hasim от 16 ноября 2012, 17:10
А зачем вам OpenOffice в этом случае?

для меня опен офис никогда не был тем чем он является для большинства (заменитель МSO). Ввиду значимости компьютера в моей жизни я бы просто купил себе лицензионный MSO и просто бы никогда не вспоминал об этом (кстати не исключено что я его и куплю что в принципе не исключает работы с ООо)
В общем опенофис имеет на самом деле очень сильную сторону о которой обычно мало говорят. Много ли вообще простых языков программирования (таких настоящих бэйсиков) одновременно 1) простых 2) кроссплатформенных 3) поддерживаемых и стабильных (я имею в виду не написанных одиночками и медленно тухнущих типа rapid-q basic) 4) свободных или хотя бы недорогих. В принципе очень немного, да и не только бэйсиков а и вообще. какое то один из этих пунктов выполняется не полностью или не выполняется вообще. А опенофис самое оно. И кстати - старый добрый MSO под вайном отчасти тоже, но то под вайном и полудохл. А тут живой и поддерживаемый с реально массовой аудиторией.

Hasim

Просто наберите в строке поиска на этом форуме слово "python" и почитайте все найденные сообщения.
В самой первой есть ссылка http://www.macro-doc.narod.ru/ на что-то похожее на инструкцию, как использовать Python в OpenOffice, написанную пользователем с примерами. Примеров много и на этом форуме и на других форумах по OpenOffice (http://www.oooforum.org/forum/ или http://forum.openoffice.org/en/forum/ и т.д.). Попробуйте сами запустить эти скрипты.
Вы намерены использовать Python версии 2.6, встроенный в OpenOffice, поэтому доступны только возможности этой версии (и имеющиеся в данной поставке библиотеки).
Вызов скрипта на Python осуществляется стандартным способом (и, как я уже говорил, можно макросом на кнопке или пункте меню).
Но всё это пустое теоретизирование.
Надо начать с какого-то конкретного скрипта, который вы хотите запустить, и, пользуясь советами на указанных форумах, попробовать его запустить. (Согласованность версий важна.)
Если что-то не получится, спрашивайте (по вполне конкретной проблеме на вполне конкретном скрипте), вам, скорее всего, ответят.


calc4fem

да спасибо за ссылку. обязательно посмотрю и обязательно попробую
вот пример скрипта с которого я хочу в частности начать http://dip28p.web.fc2.com/calculix/gmshconvertviamsh/index.htm

Hasim

1. Я понял, что командная строка для запуска скрипта:
> python  g2c3.py  gmsh.msh sol.inp    C3
или
> python  g2c3.py  gmsh.msh sol.inp    C3             R

2. Скрипт g2c3.py я нашел, где скачать, скачал.
3. (input file) gmsh.msh - не знаю, что это такое и где его брать. Выложите пример этого файла.

4. Хорошо бы проверить эту командную строку на чистом Python, не через OpenOffice (можно и на том, что в OpenOffice).

calc4fem

#11
Спасибо хотя я не имел в виду этот скрипт только конкретно. Этот как пример.
Общая задача стоит примерно так - как автоматизировать произвольный скрипт (или произвольную функцию) написанную на python сделав к нему интерфейс из ООо и используя пайтон внутри ООо. может быть тут даже проще вообще не использовать модуль пайтон как модуль для ООо а тот же бэйсик через команду Shell. Хотя бэйсик не запускает вроде бы консольные приложения.
файл я прилагаю
скрипт сам по себе не вполне корректно работает (не понял почему) но результат выдает тем не менее - правильный до одной строчки (что впрочем не важно в данном случае)

(перенесено)

[вложение удалено Администратором]

Hasim

Python из OpenOffice отработал до конца (хотя и с ошибкой "No module named encodings").
Результат - приложенный файл sol.inp
Проверьте, верен ли этот файл (правильно ли отработал скрипт)?


[вложение удалено Администратором]

calc4fem

#13
да скрипт отработал верно (с точностью до косяков самого скрипта что поправимо)

я тоже несколько минут назад это попробовал -  запустил из консоли скрипт в папке program/ OOo - тоже все работает как у вас.
Вопрос такой
как сделать следующее.
открывается документ ООо
подцепляется файл gmsh.msh - через контрол выбора
выбирается из комбобокса ключ если нужен
выбирается контролом же выбора папка куда будет выложен результат
нажимается кнопка на исполнение скрипта.
То есть это такая задача - как сделать скрипты на пайтон доступными среднестатистическому пользователю с использованием логичных интуитивно понятных операций.
я думаю что скорее всего нужно будет какое то расширение для этого написать.

Вторая задача касаемо использования функций в Calc с интерфейсом же в Calc
Возможно ли это,
то есть если это возможно - то это "вторая жизнь" для наследия пайтон и очередной плюс установить ООо даже если уже установлен MSO
ну и конечно аргумент в пользу выбора пайтон для тех кто хочет что то написать на нем для широких масс и быстро. Не думая о всяких полуработающих py2exe и тиклях для интерфейса

Hasim

Самый простейший вариант через Shell.
Макрос Main_Python вешается на кнопку, пункт меню и т.д.
Значения аргументов arg1,...arg5 можно выбирать любым способом, например из формы, списков и т.п.

Sub Main_Python

arg0="c:\Program Files\OpenOffice.org 3\program\python.exe" & " "
arg1="g2c3.py"
arg2="gmsh.msh"
arg3="sol.inp"
arg4="C3"
arg5="" '''"R"

argstr=arg1 & " " & arg2 & " " & arg3 & " " & arg4 & " " & arg5

Shell (arg0, 1 ,argstr)
End Sub