Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Python: Общие вопросы > Спешу похвастаться! |
Автор: proDiva 26.9.2006, 14:25 |
Я закончила свою первую прогу на питоне!!! Ее функции: 1. Читает xml-файлы с электронными платежными документами (для незнающих: это банковские платежки); 2. Создает dbf-файл и закачивает в него данные из xml-файла; 3. Корректирует наименования счетов (находит их в текстовом файле); 4. Печатает реестр электронных документов; 5. Формирует новый xml-файл с исправлениями. Если таким же начинающим, как я, интересен код, могу скинуть по электронке. |
Автор: J2A 26.9.2006, 15:08 | ||
Какой модуль используешь? |
Автор: pythonwin 26.9.2006, 15:30 | ||
а почему на форуме не можешь выложить? ![]() |
Автор: proDiva 26.9.2006, 15:51 |
dbf.py код очень длинный. Могу выложить отдельные функции. Не могу ручаться за рациональное построение программы, но, что все верно работает, гарантирую. Как мне уже сказали, есть много готовых модулей, а я дедовским методом писала ручками. |
Автор: J2A 26.9.2006, 18:20 |
Не самый быстрый, не самый удобный. Альтернативы см. на http://omsk.lug.ru/wacko/Python/Dbf |
Автор: PyAlexey 27.9.2006, 07:22 |
Так выкладывайте, уважаемая, архив в аттач сообщения )). |
Автор: pythonwin 27.9.2006, 07:51 |
Поддерживаю! proDiva, если сможешь, то пожалуйста, - выложи код. ![]() если тебя потом за это накажут на работе, но можешь не выкладывать - думаю все поймут. ![]() Но если выложишь на форум код, то возможно в результате совместной работе у тебя будет более совершенный код + ты получишь дополнительные знания и навыки. ![]() |
Автор: proDiva 27.9.2006, 10:22 | ||
Ну тогда подсказывайте, интеллигентная мужская компания)), куда и как выкладывать, а то "в аттач сообщения" - мне не о чем не говорит))))
а по-моему, интеллигентная мужская компания просто хочет убедиться, что девушки не умеют программировать......... и лишний раз убедиться в своем превосходстве))) Парни, я нисколько этому не сопротивляюсь, у вас мышление для программирования "качественней"! |
Автор: PyS 27.9.2006, 10:41 | ||||
это как вложения в эл. почте ![]()
нет! ![]() Думаю, что любопытство движет нами! ![]() |
Автор: pythonwin 27.9.2006, 11:00 | ||
![]() что-то среди первых программистов много было женщин. Добавлено @ 11:00 ![]() |
Автор: PyS 27.9.2006, 11:06 |
proDiva, тебе с атачем помочь? |
Автор: proDiva 27.9.2006, 11:31 |
Спасибо, уже подсказали. У женщин память лучше, но творческое мышление развито хуже....... т.е. что-то новое нам трудно изобретать, но зато пользуемся чужим опытом превосходно ![]() Добавлено @ 11:35 Щас посмотрим, что получится))) Добавлено @ 11:37 Урра! получилось)) |
Автор: PyS 27.9.2006, 12:04 |
во вложении Думаю, что proDiva, будет не против. ![]() |
Автор: ser_gen 27.9.2006, 12:06 |
#возвращает дату (yyyy-mm-dd) в формате dd.mm.yyyy #r-входящая дата По моему это лучше оформить ввиде строки документации def dataform(self, r): """ возвращает дату (yyyy-mm-dd) в формате dd.mm.yyyy r-входящая дата """ Ну и далее тоже самое. А так ничего. |
Автор: PyAlexey 27.9.2006, 12:09 |
ser_gen, а ещё лучше — в Epytext Markup Language (epydoc). А так, пока нет времени смотреть исходники. |
Автор: pythonwin 27.9.2006, 13:14 |
Отлично! может http://vingrad.ru/@J2A что-то мощное предложит? |
Автор: proDiva 27.9.2006, 13:14 | ||
Для полноты архива не хватает пробного xml-файла..... чтобы проверить работу программы. Добавлено @ 13:15
Вот выкладываю. |
Автор: PyS 27.9.2006, 13:18 |
Это xml-файл? |
Автор: PyAlexey 27.9.2006, 13:26 |
Да, со расширением )). |
Автор: PyS 27.9.2006, 13:46 |
Спасибо! |
Автор: PyAlexey 27.9.2006, 14:05 |
proDiva Короче, посмотрел я код. Как здесь уже говорили, лучше было бы использовать другой модуль для dbf. Также стоило использовать нормальный модуль для xml. Далее. Зачем везде писали путь для файлов? К тому же такие: ‘c:/XML_Editor/’. Надо было использовать переменные, а пути делать относительными. Честно говоря, мне не понятно, Вы первый раз пишите на Питоне или программу вообще? |
Автор: Vach 27.9.2006, 14:51 |
proDiva, какой у тебя wx стоит (или версия другая или я того...)? + при кодировки не cp1251 запустить не получается (мой случай) |
Автор: proDiva 27.9.2006, 15:10 | ||
Первый раз на питоне а в замечаниях вы правы........ я говорила, что не уверена в рациональности насчет путей, исправлю....... просто я делала все по частям, а потом собрала в кучу....... и получилось, что везде прописаны пути)) (мне бывший коллега тоже все время говорил, не вбивать пути...... как видите, продолжаю) а с xml я работаю впервые и выбрала вариант, который смогла разобрать по частям. версия 2.6 |
Автор: J2A 27.9.2006, 18:47 |
Для первого опыта вполне удачно. 1. Не нужно импортировать os.path, он доступен и при импорте просто os 2. Не рекомендуется делать "from foo import *", следует либо "from foo import Foo, Bar", либо "import foo". Почему: не знаешь точно какие переменные импортировала. Так кстати и http://[url=http://omsk.lug.ru/wacko/Python/Perfomance/MyTips#h448-3. 3. По стилю все же рекомендуется классы называть с большой буквы, т.е. не "class foo", а "class Foo" 4. Переформатирования слишком сложны (класс dataload). Можно сделать гораздо проще. Например так: а) переформатирование даты '.'.join(reversed('2006-05-25'.split('-'))) (можно для увеличения читабельности разбить по переменным). б) переформатирования дробного "%.2f" % value в) выравнивание строки пробелами влево/вправо: mystr.ljust(n), аналогично и .rjust г) ну и я бы не оформлял как класс (никакого преимущества нет, т.к. не использует ни один атрибут), а оформил как функции. С учетом вышеперечисленных примеров, выделять в функцию стоит лишь переформатирование даты, остальное и так в одну конструкцию ![]() 5. Не стоит городить огород с if .. elif .. elif .. elif .. else. Возможно, проще будет http://omsk.lug.ru/wacko/Python/Perfomance/MyTips#h448-2. 6. Всё же лучше разбить по модулям. 70кб-исходник тяжко читать, да и реиспользовать потом проще будет. Извини, дальше меня не хватило... |
Автор: proDiva 27.9.2006, 19:31 |
На долго же тебя хватило ![]() Я про это и говорила, что не знаю готовых функций для того или иного действия, поэтому громоздила громадный код. По всем этим мелочам неудобно новые темы открывать и мучать людей своими вопросами ![]() Я знаю, что все можно было написать проще и удобнее. Но я все равно довольна, что я ее доделала, а главное - что она работает! Потому что когда я начинала ее писать, я питоновский код впервые в глаза увидела. Как наш зав.кафедрой на лекциях говорил: "Есть прорыв! Идем дальше!" Так что, интеллигентная мужская компания, продолжайте учить дальше ![]() |
Автор: PyAlexey 27.9.2006, 20:12 |
Кстати, проверьте свой код на вшивость: http://pychecker.sourceforge.net/ |
Автор: J2A 27.9.2006, 20:36 | ||
Проверьте http://www.logilab.org/projects/pylint'ом и ужаснитесь ![]() ![]() |
Автор: pythonwin 28.9.2006, 07:39 | ||
Это что такое? |
Автор: pythonwin 28.9.2006, 08:21 |
А можешь показать пример использования? ![]() |
Автор: PyAlexey 28.9.2006, 15:33 |
GNU GCC, кстати, очень много ошибок в коде proDiva находит. Вот уж есть над чем ужаснуться. |
Автор: slav0nic 28.9.2006, 15:42 |
pylint надо с параметрами запускать, так он мне влепил -2 балла)) и джаббер клиенту Gajim - тоже, основная часть ошибок - формирование кода, пробелы одиночные, а не табы и тп |
Автор: proDiva 28.9.2006, 16:31 | ||||
может оставим мой код в покое? такое ощущение как-будто я его на олимпиаду выставила с большим денежным главным призом)))
как видите, я его не профессионалам предлагала изучить))) |
Автор: pythonwin 29.9.2006, 07:39 | ||
proDiva, ты главное не переживай - поругали - исправь код - поругают - исправь код - .... - исправь код - похвалили! В конще этой цепочки получишь прекрасный код + навыки. И ещё - тебя уже похвалил J2A: Поэтому не растраивайся ![]() |
Автор: proDiva 29.9.2006, 08:22 | ||
В этой программе при всем уважении к Вам я ничего менять не буду - ни времени, ни желания! С понедельника уже с ней будут работать, завтра поставлю. Exe-шник уже подготовила. А навыки и Ваши советы буду применять уже в следующих тех.заданиях, так что не расслабляйтесь ![]() |
Автор: PyS 29.9.2006, 12:17 | ||
Вот и прекрасно! ![]() |
Автор: dvska 29.9.2006, 16:04 | ||
А вот это зря. Форум для того и нужен. А потом и другие новички по этим темам учиться будут. Бери пример с http://groups.google.com/group/turbogears/browse_thread/thread/85de0147f7eb5711/903f9ff80322d85f?lnk=st&q=pythonwin&rnum=9#903f9ff80322d85f-а ;) |
Автор: cherep 2.10.2006, 01:54 | ||||||
По моему это провокация. =) Для первого раза на питоне действительно очень неплохо. Видно, что proDiva имеет солидный опыт программирования в других языках. Единственно, мне показалось, что программа написана местами достаточно в процедурном стиле, на Питоне зачастую удобнее и проще использовать функц. подход. Так держать!!! Добавлено @ 02:07 Про процедурный стиль... Там есть библиотечка strutil.py Я конечно понимаю, что она 99 года, но все равно интересно, насколько не по питоновски там написаны функции. Возьмем к примеру
С ходу можно переписать так
А если поднапрячься, то и вовсе так:
|
Автор: cherep 2.10.2006, 02:24 | ||
И дальше в том же духе ![]() |