|
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
|
||||||
Добавление нескольких файлов для последующего редактирования03.09.2019, 12:20. Показов 16047. Ответов 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,241
|
|
| 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|