Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.52/75: Рейтинг темы: голосов - 75, средняя оценка - 4.52
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533

Добавление нескольких файлов для последующего редактирования

03.09.2019, 12:20. Показов 16471. Ответов 158

Студворк — интернет-сервис помощи студентам
Доброго времени суток форумчане! Не так давно, благодаря знатокам из данного форума была написана (спасибо за всё) программа. Суть её в следующем: На диске лежат файлики в которых 20 строк, каждую десятую строку программа вставляет пустую строку, затем копирует содержимое 10-й строки, добавляет перед пустой строкой (проще говоря дублирует 10-ю строку), затем дублирует 11-ю и добавляет перед 11-й строкой (капец туфтология), наглядно это вот так:

Было:
7
8
9
10
11
12
13

Стало:
7
8
9
10
10

11
11
12
13

И так программка делает каждую 10-ю строку! Строк может быть уйма. Всё работает всё делится, как надо, вопрос таков:
Файлов которые нужно редактировать много, поэтому, я хотелось бы сделать, что-то типа добавления или запоминания нескольких файлов, а затем их сразу переделывать, что каждый раз не указывать файл заново. Файлы лежат в разных папках, поэтому забирать из корня не выйдет. Желательно сделать наглядно, чтобы я уже видел, какие файлики я добавил, а какие нет! Заранее спасибо за помощь!

Собственно и сама программа:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
from tkinter import *
from tkinter import ttk
import os
 
from tkinter import messagebox
from tkinter import filedialog
 
def update_the_label():
    lb0 = Label(window, text = "-")
 
def clicked_dialogOpen():
    global choosefile
    choosefile=filedialog.askopenfilename(filetypes=(("Text files", "*.txt"), ("all files", "*.*")))
    lb0 = Label(window, text = choosefile)
    lb0.pack(side ="top")
 
def clicked():
    try:
        with open(choosefile, 'r+', encoding='utf-8') as f:
            lines = f.readlines()
            f.seek(0)
            for i in range(int(combo.get())-1, len(lines), int(combo.get())):
                lines[i]+=lines[i][0:21] + "\n\n"
                if i <len(lines)-1:
                    lines[i+1]=lines[i+1][0:21] + " Информация: " + "\n" + lines[i+1]
            f.writelines(lines)
        f.close()      
    except:
        messagebox.showerror("Ошибка", "Дядь, файлик то выбери!")
    messagebox.showinfo("Завершение", "Готова")
 
window = Tk()
window.title("Дырка")
window.geometry('220x400')
window.resizable('false', 'false')
 
lb1 = Label(window, text = "Диапазон строк: ")
lb1.pack(side ="top")
 
combo=ttk.Combobox(window, values=(2,10,50,100,250,500,600,700,800,900,1000), width=28)
combo.current(0)
combo.pack(side ="top")
 
btn3 = Button(window, text = "Обновить список", command = update_the_label, width=26)
btn3.pack(side = "top")
 
btn2 = Button(window, text = "Открыть файл", command=clicked_dialogOpen, width=26)
btn2.pack(side ="top")
 
btn = Button(window, text ="Зарубить", command=clicked, width=26)
btn.pack(side ="top")
 
lb2 = Label(window, text = "_________________________")
lb2.pack(side ="top")
 
lb3 = Label(window, text = "Список отредактированных файлов:")
lb3.pack(side ="top")
 
window.mainloop()
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.09.2019, 12:20
Ответы с готовыми решениями:

Сохранить данные из них для последующего просмотра и редактирования
имеется несколько полей в которые заносятся данные. как мне сохранить данные из них для последующего просмотра и редактирования?

Как целиком загрузить таблицу из SQL БД в браузер для последующего её редактирования?
Как целиком загрузить таблицу из SQL БД в браузер для последующего её редактирования?

Добавление картинки через диалоговое окно по кнопке, для последующего сохранения в таблицу
Здравствуйте, в бд имеется таблица с полями Оле. В поля Оле добавляются картинки с изделиями. Создал форму для добавления картинок и...

158
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.09.2019, 11:48  [ТС]
Студворк — интернет-сервис помощи студентам
Я знаю, чтоWelemir1 в курсе, как это делается Но он хитрец не рассказывает, хочет, чтобы я книги читал
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,184
Записей в блоге: 6
04.09.2019, 11:49
Цитата Сообщение от Damenikx Посмотреть сообщение
Так у нас открытие файла начинается при запуске программы, а не при нажатии на кнопку
Не, я, конечно, всё понимаю, но нельзя же так бездумно всё копипастить.
Это просто примерный фрагмент, как вернуть значение из одной функции и передать в другую. Он совершенно не обязан быть на верхнем уровне в модуле, даже более того - я сказал выше, что оно должно быть в цикле. А цикл, в свою очередь, тоже в какой-то функции.

Добавлено через 28 секунд
Цитата Сообщение от Damenikx Посмотреть сообщение
Я знаю, чтоWelemir1 в курсе, как это делается Но он хитрец не рассказывает, хочет, чтобы я книги читал
Ну вообще он прав, у меня тоже терпение скоро кончится.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.09.2019, 11:53  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
Кроме того, есть ещё такая тонкая материя, как глобальные переменные и глобальные значения (variables vs values). Первые недопустимы, вторые иногда можно себе позволить.
Вот в том то и проблема, что с этим fileDialog'ом фиг достать этот путь без ещё одного вызова функции в которой опять открывается fileDialog. Поэтому я и использовал глобалку.

Добавлено через 1 минуту
Цитата Сообщение от dondublon Посмотреть сообщение
Не, я, конечно, всё понимаю, но нельзя же так бездумно всё копипастить.
Не, не. Я не копипастил. Есть программа, которая работает по этому принципу, без гуи, там так и реализовано, как Вы писали. Поэтому я и сказалЬ

Добавлено через 24 секунды
Цитата Сообщение от dondublon Посмотреть сообщение
Ну вообще он прав, у меня тоже терпение скоро кончится.
Тогда прошу прощение за нервотрёпку.

Добавлено через 1 минуту
В цикле это то понятно, для нескольких файлов, только мне бы сначала теперь с одним разобраться.
0
5042 / 1069 / 149
Регистрация: 29.01.2013
Сообщений: 6,253
04.09.2019, 12:03
Damenikx, я так понимаю, сейчас у вас в проекте та ещё кашица, равномерно растёкшаяся по всему коду.
Что бы исправить это, советую вам написать блок-схему работы вашей программы.
К каждому блоку этой блок-схему припишите фрагмент кода, который это делает. Если получается, что возле одного блока больше 5-и строк кода, пересмотрите ещё раз, возможно этот блок у вас выполняет больше одной функции, а так быть не должно.
К каждой стрелочке припишите входящие переменные перед блоком и результирующие после блока. Так же можно сюда добавить ожидаемые конкретные значения.

Эта работа поможет вам правильно организовать логику работы программы, понять, что, откуда, и, главное, как вы получаете, что с этими данными делаете и зачем вам подобное преобразование вообще надо.

Подобным образом нас учили ваять архитектуру сурового энтерпрайз-софта. Ещё и приговаривали: если вы не можете в течении 15 секунд придумать обоснуй для блока и озвучить его, если у вас получается слишком много пояснений и аргументации, то с этим блоком явно что-то не то.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.09.2019, 12:18  [ТС]
Alli_Lupin, не поверите, нарисовал уже. Я тоже учился в университете и проходил основы алгоритмизации и программирования. Я не могу понять, почему я не могу из функции вытянуть только переменную. Допустим с#, там это делается запросто. Возможно мне надо пересмотреть построение, сделать классы.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
04.09.2019, 12:32
Цитата Сообщение от Damenikx Посмотреть сообщение
Допустим с#, там это делается запросто.
тут еще проще

Цитата Сообщение от Damenikx Посмотреть сообщение
Возможно мне надо пересмотреть построение, сделать классы.
недостаток знания матчасти
1
5042 / 1069 / 149
Регистрация: 29.01.2013
Сообщений: 6,253
04.09.2019, 12:37
Цитата Сообщение от Damenikx Посмотреть сообщение
я не могу из функции вытянуть только переменную
Воспользуйтесь отладчиком того же PyCharm и посмотрите, где именно она лежит.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.09.2019, 14:34  [ТС]
Welemir1, уже перечитал Лутца, главу с функциями, перерыл интЫрнет. Не получается блин, без fileDialog - никаких проблем, а с ним ну не могу!

Добавлено через 14 секунд
Alli_Lupin, наверное стоит всё таки поставить.

Добавлено через 1 минуту
Alli_Lupin, спасибо за идею.

Добавлено через 28 секунд
Welemir1, подскажите, куда копать.

Добавлено через 1 час 41 минуту
Ну, наверное оставлю глобальную переменную, ибо я не могу понять, как это сделать.

Добавлено через 6 минут
Я понимаю, что можно сделать так:

Python
1
2
3
def clicked_dialogOpen():
    takeFile = filedialog.askopenfilename(filetypes=(("Text files", "*.txt"), ("all files", "*.*")))
    change_Files(takeFile)
Python
1
2
3
def change_Files(takeFile):
    try:
        with open(takeFile, 'r+', encoding='utf-8') as f:
Но так, я передам всю функцию, а не то, что содержит переменная takeFile
0
5042 / 1069 / 149
Регистрация: 29.01.2013
Сообщений: 6,253
04.09.2019, 14:38
Damenikx, так с помощью инструкции return вы можете вернуть только то, что вам надо. Надо всё - верните всё, надо только путь - верните путь.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.09.2019, 14:47  [ТС]
Alli_Lupin, вот я и пишу:

Python
1
2
3
def clicked_dialogOpen():
    takeFile = filedialog.askopenfilename(filetypes=(("Text files", "*.txt"), ("all files", "*.*")))
    return takeFile
Добавлено через 9 секунд
Так вы имеете ввиду?
0
5042 / 1069 / 149
Регистрация: 29.01.2013
Сообщений: 6,253
04.09.2019, 14:50
Damenikx, да. Вам результат чем-то не нравится?
0
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.09.2019, 14:54  [ТС]
Я не могу в другую функцию взять этот результат. Только ВСЮ функцию, а значит на вторую кнопу мне опять придётся выбирать файл.

Добавлено через 1 минуту
У меня одна функция отвечает за выбор файла, а вторая за изменения в выбранном файле.
0
5042 / 1069 / 149
Регистрация: 29.01.2013
Сообщений: 6,253
04.09.2019, 14:59
Damenikx, а вы хотите, что бы путь хранился и переиспользовался? Тогда вам надо смотреть в сторону объектов и объекты передавать в функции. Либо мутить 3-ю функцию, которая будет вызывать диалог выбора файлов. Уже из этой функции вызывать все остальные, где надо путь к файлу.
0
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.09.2019, 15:01  [ТС]
Alli_Lupin, Вот! До третьей функции я и дошёл, я додумался спустя сутки что нужно разделить всё это дело. Что одна функция будет только открывать файл, вторая будет передавать имя этого файла, а третья уже выполнять. Но я встрял опять. Я не догоняю как мне сначала передать в одну функцию, а потом в другую.
0
5042 / 1069 / 149
Регистрация: 29.01.2013
Сообщений: 6,253
04.09.2019, 15:20
Damenikx, у вас алгоритм линейный, или интерактивный, с ветвлением?
0
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.09.2019, 15:34  [ТС]
Линейный же, тут всё по порядку, никаких ветвления нема. Не считая try, except ну это просто исключения.

Добавлено через 44 секунды
Я просто не понимаю, как в Python вытянуть эту блинскую переменную, одну, без функции, просто переменную!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!

Добавлено через 9 минут
Объясните мне дибилу пожалуйста, как это делается, я уже весь интернет перерыл, нет там ничего похожего.
0
5042 / 1069 / 149
Регистрация: 29.01.2013
Сообщений: 6,253
04.09.2019, 15:36
Damenikx, если дело дошло до таких нервов, воспользуйтесь глобальной переменной. Это плохая практика, но работать будет.
1
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
04.09.2019, 15:38
Цитата Сообщение от Damenikx Посмотреть сообщение
Объясните мне дибилу пожалуйста, как это делается, я уже весь интернет перерыл, нет там ничего похожего.
а что в книге говорится?

Цитата Сообщение от Damenikx Посмотреть сообщение
как в Python вытянуть эту блинскую переменную, одну, без функции, просто переменную!
ничего не понятно

Python
1
2
3
def get_value():
    x=1
    return x
вот переменная вернулась из функции
1
5042 / 1069 / 149
Регистрация: 29.01.2013
Сообщений: 6,253
04.09.2019, 15:41
Цитата Сообщение от Welemir1 Посмотреть сообщение
вот переменная вернулась из функции
ТС хочет переиспользуемую переменную. Что бы и сюда использовать, и туда использовать, а окошки смотреть не хочется.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
04.09.2019, 15:56  [ТС]
Цитата Сообщение от Welemir1 Посмотреть сообщение
вот переменная вернулась из функции
Так а вы теперь попробуйте её впихнуть отдельно в другую функцию, но не затрагивая fileDialog
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.09.2019, 15:56
Помогаю со студенческими работами здесь

Поиск и перемещение файлов в папку для их последующего удаления
пытаюсь организовать поиск и перемещение файлов в папку для их последующего удаления, решил сначала попробовать взять записанные в файл...

Добавление нескольких файлов в БД
Мне надо вывести в бд сразу несколько файлов в форме. сказали что надо преобразовать массив в строку с помощью serialize() чтобы добавить...

Добавление нескольких файлов в бд
Добрый день. Столкнулься с проблемой, так как сам в програмировании пребиваю на начальной стадии обучения прошу совета. Необходимо...

Процедурное создание мира с целью его последующего редактирования
Привет, Я так и не придумал как сформировать свой запрос в гугле, поэтому надеюсь на вашу помощь. Итак, я хочу, чтобы юнити создал мне...

Добавление нескольких файлов в OpenFileDialog
Надо сделать чтоб можно было выбрать несколько файлов в OpenDialog Пока вот что сделал, место пути выдаёт OpenFileDialog1. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации: В классе Работник добавить: накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни коэффициентПрезентеизма — снижает продуктивность. . .
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день. Для работы необходим браузер,. . .
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано. . . .
Как я стал коммунистом))) Модель сохранения здоровья сотрудников, запись блога номер 15
anaschu 23.05.2026
Внезапно хорошее здоровье сотрудников не нужно капиталистам?))
Модель здравоСохранения 15. Как мы чинили AnyLogic модель рабочего коллектива: сочленение диаграммы состояний болезней и поломок в ресурспул
anaschu 23.05.2026
Как мы чинили AnyLogic модель рабочего коллектива Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
Диалоги с ИИ
zorxor 23.05.2026
Насколько я понимаю - Вы - Искусственный Интеллект. Это так? Да, всё верно. Я — искусственный интеллект. Я представляю собой большую языковую модель, созданную для помощи в самых разных задачах. . . .
Модель здравосохранения 14. Собираем всю модель вместе.
anaschu 22.05.2026
Модель собрана. В будущих постах на видео я покажу, как она работает. В этом посте запускаем её, проверяем результаты и разбираем что можно с ней делать дальше. Перед запуском проверяем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru