|
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
|
||||||
Добавление нескольких файлов для последующего редактирования03.09.2019, 12:20. Показов 16295. Ответов 158
Метки python 3.x (Все метки)
Доброго времени суток форумчане! Не так давно, благодаря знатокам из данного форума была написана (спасибо за всё) программа. Суть её в следующем: На диске лежат файлики в которых 20 строк, каждую десятую строку программа вставляет пустую строку, затем копирует содержимое 10-й строки, добавляет перед пустой строкой (проще говоря дублирует 10-ю строку), затем дублирует 11-ю и добавляет перед 11-й строкой (капец туфтология), наглядно это вот так:
Было: 7 8 9 10 11 12 13 Стало: 7 8 9 10 10 11 11 12 13 И так программка делает каждую 10-ю строку! Строк может быть уйма. Всё работает всё делится, как надо, вопрос таков: Файлов которые нужно редактировать много, поэтому, я хотелось бы сделать, что-то типа добавления или запоминания нескольких файлов, а затем их сразу переделывать, что каждый раз не указывать файл заново. Файлы лежат в разных папках, поэтому забирать из корня не выйдет. Желательно сделать наглядно, чтобы я уже видел, какие файлики я добавил, а какие нет! Заранее спасибо за помощь! Собственно и сама программа:
0
|
||||||
| 03.09.2019, 12:20 | |
|
Ответы с готовыми решениями:
158
Сохранить данные из них для последующего просмотра и редактирования Как целиком загрузить таблицу из SQL БД в браузер для последующего её редактирования? Добавление картинки через диалоговое окно по кнопке, для последующего сохранения в таблицу |
|
Модератор
|
||
| 06.09.2019, 14:53 | ||
|
Работал с 1 источником питания объявил его параметры глобальными переменными, все работало на ура. Появилась потребность подключить 2 источника, выставляя напряжение на одном, на другом тоже значение поменялось. Результат: сжег весьма дорогой девайс.
1
|
||
|
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
|
|
| 06.09.2019, 14:56 [ТС] | |
|
Оооооооооооооо, а вот это уже прям жизненно!
0
|
|
| 06.09.2019, 18:57 | ||
Единственно что можно сказать, когда используются глобальные переменные как у Вас, без определения их на верхнем уровне модуля, то при чтении кода другими людьми, а может и Вами в будущем ( если Вы не комментируете свой код) , то могут возникнуть сложности с пониманием текста. Это из-за того, что на верхнем уровне в случае , как у Вас, они присутствую только динамически в пространстве имен модуля, и то, только тогда, когда была запущена содержащая глобальную переменную функция. Что бы упростить такой код для понимания, можно задать необходимые переменные, которые будут затем в функции объявлены глобальными, разместив их вначале кода, как переменные пространства имен модуля.Это будет избыточный код, но улучшающий читаемость программы. Кстати в своей программе я так и делаю, определяю переменные в начале модуля, которые потом в функциях будут объявляться как глобальные. При этом сразу присваиваю им некоторые значения по умолчанию. Кстати в Вашем случае для лучшей читаемости можно было переменную choosefile задать в начале кода (сразу после импорта), на уровне пространства имен модуля, присвоив в качестве значения пустую строку '' . Эти строки в работе программы ничего не меняют, но читаемость программы улучшается. Добавлено через 6 минут Проблема, о которой рассказал DmFat, возникла из-за не правильного структурирования пространств имен. Если бы источник 1 и источник 2 имели бы разные, свои собственные пространства имен, то проблем бы небыло, так как не было бы пересечения пространств имен для разных источников. И еще раз повторюсь, для работы с глобальными переменными нужно хорошо понимать структуру пространств имен и областей видимости, последнее кстати не одно и то же. Добавлено через 10 минут Кстати самый простой способ структурирования пространств имен, это использование модулей и импортретирование их с помощью синтаксиса import ... , а не инструкции from ... import ... , так как последняя смешивает пространства имен, объединяя пространство имен модуля с пространством имен вызывающего сценария. Именно тогда и возникают проблемы как у DmFat. Добавлено через 16 минут Структурировать пространства имен можно так же с помощью классов. Каждый экземпляр класса имеет свое пространство имен и они не пересекаются. Если бы у DmFat, источник 1 и источник 2, были созданы как экземпляры класса "Источник", то проблем, которые у него случились так же можно было избежать. Damenikx, это я Вам пишу в качестве небольшой консультации, а для более глубокого понимания, как говорит Welemir1, читайте литературу, Я например читаю Лутца.
1
|
||
|
|
||||
| 06.09.2019, 18:58 | ||||
То есть отказ от глобалок, иными словами. Вы серьёзно? Для задачи с двумя одинаковыми источниками питания, как в задаче DmFat, один модуль - для одного, второй - для второго? По тексту получается так.
1
|
||||
| 06.09.2019, 19:48 | ||
|
На данный момент, однако, особенно если вы относительно новичок в программировании, избегайте соблазна использовать глобалы, когда вы можете—они, как правило, затрудняют понимание и повторное использование программ и не будут работать в тех случаях, когда одной копии сохраненных данных недостаточно. Здесь Лутц говорит не об использовании глобальных переменных вообще, а только о том, что для их использования на данный момент (то есть на данной стадии обучения), когда Вы еще не умеете грамотно использовать глобальные переменные, нужно стараться их избегать. Вообще интересный принцип Вы предлагаете. Если какая то область знания сложная и при не правильном ее использовании может привести к сбою, то вы предлагаете не использовать эти знания, вместо того, что бы как следует это изучить и не допускать ошибок в использовании этого знания. Я использую глобальные переменные и у меня все работает без сбоев. Вы же так запудрили мозги Damenikx, Что у него даже та часть кода, которая работала, перестала работать. ![]() У меня же принцип другой, если можешь используя какой либо прием писать код без ошибок, значит имеет смысл использовать его, когда он упрощает задачу. У Damenikx, основной код, с использованием глобальной переменной нормально работал, а проблема в другом, которую вы даже и не поняли, и тогда прицепились к глобальной переменной, которая у него нормально работала. А теперь без глобальной переменной программа вообще перестала работать. Вот уж помогли.
1
|
||
|
Автоматизируй это!
|
||
| 06.09.2019, 19:59 | ||
|
Viktorrus, ты всю главу прочел? он там много чего написал и привел примеры, я только цитатку одну привел.
ТС я тоже сказал -пусть использует что хочет, ему сейчас не глобал нужен и не твои вредные советы, а много читать, с самых основ, а он ленится. Но он может и не читать, это его право, можно всю жизнь писать вот такие программки для себя и прекрасно себя чувствовать.
1
|
||
|
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
|
|
| 07.09.2019, 08:47 [ТС] | |
|
Welemir1, чтением можно ещё больше запудрить себе мозг. Вы не можете с уверенностью сказать, читал я или нет. Пару постов выше я говорил: "я прочитал", вы же всё равно говорите читать. При этом получается практики нет и надо постоянно читать. Я не могу зубрить, у меня не получается запоминать, когда я читаю, я запоминаю "на практике", так проще для меня. Я могу прочитать один абзац 10 раз и не запомнить его, но один раз сделав запоминаю. Так сколько надо читать Лутца, чтобы Вы сказали "вот теперь можешь писать не только свои говнопрограмки"?
0
|
|
|
Автоматизируй это!
|
||
| 07.09.2019, 09:18 | ||
|
Что такое except, почему нельзя использовать его так как у тебя (не указав исключения)? Но ты опять не правильно отнесся, я не настаиваю, не читай, пиши как бог на душу положит, главное же "чтоб код работал".
1
|
||
|
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
|
|
| 07.09.2019, 09:43 [ТС] | |
|
Welemir1, я учусь. Я не студент, которому дали задание на дом и он просит решить его на форуме. Я взял просто идею создания мааааааааленькой програмки и пытаюсь сделать с поддержкой людей с форума, которые знают и которые подскажу. Я не прошу написать за меня код или "сделайте на меня програмку". Я спрашиваю и если мне указывают на ошибку, то спасибо большое. Всегда отношусь к критике с пониманием. Вот из вашего поста я теперь понимаю - "ага, исключения не правильно написаны, надо бы пересмотреть".
0
|
|
| 07.09.2019, 09:47 | |
|
Не по теме: тему можно переименовывать в ликбез по пайтону
1
|
|
|
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
|
|
| 07.09.2019, 09:58 [ТС] | |
|
Welemir1, посмотрите вот эту тему, одним глазком
. Там форумчанин, просто, разжевал настолько, что я офигел. При этом я его не просил. Но ему просто стало интересно. Сейчас я с ним хорошо общаюсь. Он не говорил мне: "иди читай". Мы доходили до какого-то момента, где у меня начинался ступор (а она начинался часто) и я шёл читать мат. часть именно в том куске до которого, до меня не доходило. Я понимаю, что никто не должен тут водить меня за ручку и всему учить, нет конечно. Просто "иди читай, много читай" и "прочти тут вот это и ты поймёшь" это две разные вещи.Скачивание папки с FTP - сервера по актуальной дате Добавлено через 1 минуту Не по теме: Alli_Lupin, а чо, хорошо сидим, общаемся с умными людьми. Но да, вопрос темы не решён, зато интересно же! :) Добавлено через 8 минут Вот вчера, когда тут была дискуссия по поводу глобалок, использовать их или нет, я пришёл к выводу, что на моём уровне знаний, вот сейчас, я могу использовать глобальные переменные, но при этом надо понимать, что при более больших и значимых приложениях этого делать не стоит. Вывод этот пришёл не потому что я пошёл рыть всего Лутца, а потому что люди сами здесь эту дискуссию и начали, кто-то считает, что можно, а кто-то нет. Возможно, когда-нибудь, в далёком будущем я и до этого момента дойду и вспомню, что Welemir1, очень не советовал их использовать и тогда моё мнение о глбальных переменных поменяется и я не стану их использовать. Да я понимаю, что нужно сразу учиться делать всё правильно, но приходит это не сразу, а с опытом.
0
|
|
|
5042 / 1069 / 149
Регистрация: 29.01.2013
Сообщений: 6,249
|
|
| 07.09.2019, 10:03 | |
|
Damenikx, сидим хорошо, но у меня больше полусотни писем за 3 дня))
1
|
|
| 07.09.2019, 10:06 [ТС] | |
|
Не по теме: Alli_Lupin, Сегодня же суббота, расслабься :)
0
|
|
| 07.09.2019, 12:35 | |
|
Damenikx, Как я понимаю Ваша задача пока не решена. Вы так и не уточнили условие задачи и не написали алгоритм, что должен делать код в отношении вывода информации внизу формы. Вечером займусь и напишу пример решения Вашей задачи так, как я ее вижу. А Вы потом уточните, то ли Вам нужно.
Не по теме: А сейчас пойду поиграю в ВОВ, пока очередь на сервер игры не большая.:)
1
|
|
| 07.09.2019, 17:27 [ТС] | |
|
Не по теме: Viktorrus, вы как - то поздновато собрались, мы уже дасквуд закончили :))
0
|
|
| 08.09.2019, 12:53 | ||||||
|
Damenikx, Вот я в качестве примера сделал вариант вывода информации внизу формы.
Кликните здесь для просмотра всего текста
Было бы нагляднее выводить информацию сдвигая строчки вверх при заполнении блока списка. Но я не знаю как просто прочитать запись из метки. Или нужно вести параллельный список этих записей, и брать оттуда или использовать для вывода информации не Label а виджет Entry. У него есть методы set() и get(). Но это Вы решайте сами. Вы же не дали алгоритма, что Вам нужно делать. Еще не плохо было бы вести базу данных обработанных файлов, что бы повторно не пускать файл в обработку. Но я не знаю, что Вы делаете с обработанными файлами. Может переносите их в другую папку. Потом я не знаю, поступают ли новые файлы с одинаковыми именами. В общем я многого не знаю, что бы написать окончательный вариант кода. Поэтому используя мой пример пишите тот код, который Вам нужен. Добавлено через 23 минуты Damenikx, Извините, я как всегда разбираясь с задачей, уже забыл что Вы написали в условии. Сейчас перечитал и оказалось я не совсем то сделал. Вы хотите выбрать несколько файлов и обработать их оптом. Но тогда Вам в форме нужно добавлять кнопку "Обработать все" только предварительно очищать список, и выбирать файлы, что бы обработать их оптом. Хотя под "Зарубить" можно подразумевать именно обработку всех выбранных файлов. Что бы так сделать, нужно в мой код добавить создание списка выбранных файлов и потом в цикле обрабатывать все файлы из этого списка. Попробуйте это сделать сами, если не получится, то обращайтесь. Добавлено через 7 минут Но в таком варианте, Вы зараз можете вывести информацию о выбранных фалах, не более чем позволяют размеры формы. Или нужно создавать дополнительные формы для вывода информации о выбранных файлах и форму с информацией об обработанных файлах. Решите, что Вам нужно.
1
|
||||||
| 08.09.2019, 21:19 | ||||||
|
Damenikx, Вот переделал что бы обрабатывало оптом.
Кликните здесь для просмотра всего текста
Алгоритм такой. Выбираете нужное количество файлов (сколько выбирать не ограничено, но информация выводится только о пяти последних файлах, это ограничено размером окна). Затем нажимаете кнопку "Зарубить" и оптом обрабатываются все выбранные файлы. Затем делаете очистку списка выбранных файлов и все повторяете по новой. Добавлено через 14 минут Damenikx, Я поленился писать комментарии, поэтому, что не понятно, спрашивайте. Я объясню.
1
|
||||||
|
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
|
|
| 09.09.2019, 08:16 [ТС] | |
|
Viktorrus, спасибо Вам огромное за проделанную работу. Правда программа выдаёт ошибку "якобы файл не выбран". Попробую разобраться
0
|
|
|
|
|||
| 09.09.2019, 10:20 | |||
|
Viktorrus,
1
|
|||
| 09.09.2019, 10:20 | |
|
Помогаю со студенческими работами здесь
100
Поиск и перемещение файлов в папку для их последующего удаления Добавление нескольких файлов в БД Добавление нескольких файлов в бд
Добавление нескольких файлов в OpenFileDialog Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
|
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|