|
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
|
||||||
Добавление нескольких файлов для последующего редактирования03.09.2019, 12:20. Показов 17161. Ответов 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
|
|
|
5184 / 1074 / 150
Регистрация: 29.01.2013
Сообщений: 6,263
|
|
| 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 | |
|
Поиск и перемещение файлов в папку для их последующего удаления Добавление нескольких файлов в БД Добавление нескольких файлов в бд
Добавление нескольких файлов в OpenFileDialog Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|