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

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

03.09.2019, 12:20. Показов 15844. Ответов 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
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
09.09.2019, 17:28
Студворк — интернет-сервис помощи студентам
Damenikx, Для начала в пошаговом режиме проследите как заполняется список chooseList содержащий выбираемые файлы.

Добавлено через 24 минуты
Damenikx, Я сейчас ухожу, а Вам вот, что нужно сделать. Загрузить в отладчик Ваш первоначальный код, который Вы дали в Задании. И проверить работает ли там выбор, что бы выяснить дело в моем коде или общая ошибка для обоих кодов.
Затем если ошибка будет продолжаться, то первое что нужно сделать, это перезагрузить компьютер и попробовать опять.
Я когда работал, то занимался настройкой компьютеров. Иногда бывает, что в компьютере накапливается мусор дающий сбои. И в этом случае перезагрузка решает все проблемы. Попробуйте перезагрузить, а потом если ошибка останется, пытайтесь ее выяснить используя отладчик в пошаговом режиме.
1
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
09.09.2019, 23:42
Damenikx, И еще, у Вас вывод сообщения сделан так, что говорит бутто выбор не сделан, хотя выбор прошел нормально, а возникает ошибка при выполнении обработки файла. Например выбранный вами файл не может быть обработан.
Вобщем осваивайте работу с отладчиком и находите с помощью его ошибку.
Кстати, какая у Вас версия питона? У меня 3.7.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
10.09.2019, 09:49  [ТС]
Viktorrus, у меня тоже 3.7

Добавлено через 1 час 39 минут
Viktorrus, получается так, что программа выполняется только если необходимый файл находится там же где и программа, в той же папке.
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
10.09.2019, 10:28
Damenikx, так используйте абсолютные пути.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
10.09.2019, 11:04  [ТС]
ioprst, абсолютные пути? Вы имеете ввиду, что просто вбить в программу путь к файлу? Как же выбор необходимого файла?

Добавлено через 14 минут
Попробую глянуть PyQt5, как советовал DmFat, возможно с его помощью эта проблема исчезнет.
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
10.09.2019, 11:25
Цитата Сообщение от Damenikx Посмотреть сообщение
Как же выбор необходимого файла?
у этого файла тоже есть абсолютный путь
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
10.09.2019, 11:34  [ТС]
ioprst, вы имеете ввиду absolute() ?

Добавлено через 2 минуты
Вот только как его в мой код воткнуть)
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
10.09.2019, 13:20
Цитата Сообщение от Damenikx Посмотреть сообщение
получается так, что программа выполняется только если необходимый файл находится там же где и программа, в той же папке.
нет, я выбираю файлы в любой папке и на любом диске и у меня все правильно работает.
Кстати один раз у меня не сработало, потому что я в спешке выбрал не текстовый файл, и программа просто не смогла его обработать.
А у Вас код написан так, что что бы не случилось, всегда выводится одно и то же сообщение, что файл не выбран.
Поэтому у меня подозрение, что и Вы выбираете файл который не может быть обработан. Например он фактически не текстовый или просто поврежденный.
Для чистоты эксперимента создайте три новых текстовых файла с простым содержимым. Состоящие из десяти строк:
1
2
3
4
и так далее.
И попробуйте выбрать только их и посмотреть как отработает программа.
А вообще, если собираетесь заниматься программированием, как следует освойте работу с отладчиком, в том числе в пошаговом режиме.
Кстати какой средой разработки Вы пользуетесь? Что бы понять какой отладчик Вы используете.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
10.09.2019, 14:08  [ТС]
PyCharm
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
10.09.2019, 14:25
Damenikx, PyCharm хвалят, хотя я сам поклонник Microsoft, так как работаю с его продуктами уже не один десяток лет. У продуктов Microsoft богатый сервис, но как следствие, они требуют мощных компьютеров. Но я всегда старался использовать, пусть не последние модели, но современные достаточно мощные компьютеры. Я использую MS Visual Studio Community 2017 и вполне доволен. Именно эта версия официально бесплатная, однако занимает на диске 10 Гбт.
С PyCharm я не знаком, но раз его хвалят, то там должен быть хороший отладчик.
Повторюсь. Постарайтесь как следует освоить работу с отладчиком, это на много упростит Вам жизнь при программировании.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
10.09.2019, 15:36  [ТС]
Viktorrus, я тоже фанат VS, сейчас есть установленная версия, но нет модуля для Python. Поэтому, я поставлю модуль и попробую отладить. Отпишусь попозже.

Добавлено через 49 минут
Ничего не понимаю...переменная chooseFile получает путь к файлу вида: "С:/1.txt", далее переходит на блок try и сразу вылетает в исключение...

Добавлено через 9 минут

Не по теме:

Угадайте, кто дибил, невнимателен, я невнимателен. Файлы лежали в корне на диске C который под правами администратора, то бишь меня... Вот они и не перезаписывались...

0
5037 / 1064 / 149
Регистрация: 29.01.2013
Сообщений: 6,214
10.09.2019, 15:36
Damenikx, что говорит отладчик?
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
10.09.2019, 15:38  [ТС]


Добавлено через 48 секунд

Не по теме:

Alli_Lupin, он говорит, что программист ди*ил. Ну то бишь я :)



Добавлено через 51 секунду
А если по теме, всё работает, всё редактируется, всё делается. Спасибо Вам, форумчане, за помощь!
0
10.09.2019, 15:44

Не по теме:

Цитата Сообщение от Damenikx Посмотреть сообщение
что программист ди*ил
я вам скажу по секрету: мы тут все такими были. Все тупили в код и не понимали, что происходит. Python вообще хорош тем, что можно поломать всё лишним пробелом. И фиг потом сходу найдёшь что и где.

0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
10.09.2019, 22:01
Цитата Сообщение от Damenikx Посмотреть сообщение
я тоже фанат VS, сейчас есть установленная версия, но нет модуля для Python
Есть разные версии VS. Конкретно в той, которую указал я, есть полная поддержка питона, в том числе веб проектов на питоне и другое. Ничего дополнительно устанавливать не нужно. Только уже в самом питоне нужно с помощью pip установить необходимые Вам для работы пакеты.

Добавлено через 12 минут
Цитата Сообщение от Damenikx Посмотреть сообщение
Вот они и не перезаписывались...
В качестве практики, да и для улучшения программы подредактируйте код, что бы когда именно список chooseList перед передачей файлов на обработку проверялся, проверялся что он не пуст, и в случае отсутствия в нем элементов, выводилось сообщение "Дядь, файлик то выбери!". А вот в случае где это сообщение стоит сейчас, нужно написать, "Не возможно обработать файл". Тогда и без отладчика было бы ясно, в чем причина. А сейчас, не верно расположенное сообщение вводило Вас в заблуждение, что не выбирается файл. Кстати при умелой работе с отладчиком, этого заблуждения не было бы.

Добавлено через 3 минуты
Но правильно выдаваемые сообщения помогут и другим, если кто то другой будет работать с этой программой и по ошибке выберет не тот файл, который программа не сможет обработать.

Добавлено через 34 минуты
Damenikx, Так я не понял. Вы используете мой код, который я написал, взяв за основу Ваш код, с так не любимыми некоторыми глобальными переменными, или какой то другой? Или Вы его переделали? Тогда выложите пожалуйста сюда Ваш вариант.
1
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
11.09.2019, 08:00  [ТС]
Viktorrus, Ваш конечно)
0
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
11.09.2019, 14:11  [ТС]
У меня ещё один вопрос, если можно, касаемо данного кода. Подскажите пожалуйста:

Вот маленький фрагмент:
Python
1
2
3
4
5
6
7
8
9
10
def change_file():
    with open("f:/123/1.txt", 'r+', encoding='utf-8') as f:
        lines = f.readlines()
        f.seek(0)
        for i in range(int(10-1), len(lines), int(10)):
            lines[i]+=lines[i][12:20] + "\n\n"
            if i <len(lines)-1:
                lines[i+1]=lines[i+1][12:20] + " Информация: " + "\n" + lines[i+1]
        f.writelines(lines)
    #f.close()
В этой части:
Python
1
lines[i+1]=lines[i+1][12:20] + " Информация: " + "\n" + lines[i+1]
Я выкалупываю из строки символы с 12 по 20, эти символы - цифры, а можно ли в этом же цикле увеличить последний символ (20-й) на один?
0
 Аватар для Damenikx
955 / 341 / 114
Регистрация: 04.08.2018
Сообщений: 2,533
12.09.2019, 14:33  [ТС]
Помогити!!!
0
5037 / 1064 / 149
Регистрация: 29.01.2013
Сообщений: 6,214
12.09.2019, 14:36
Damenikx, в пайтоне строки не редактируются
1
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
12.09.2019, 15:01
Damenikx, вообще какая-то страшная обработка. Объясни словами, что хочешь сделать.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.09.2019, 15:01
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
140
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru