Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 01.04.2019
Сообщений: 1

Как изменять несколько строк по номеру в файле?

01.04.2019, 14:24. Показов 2859. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Подскажите, пожалуйста, как правильно сделать перезапись файла при изменении нескольких строк в цикле?
Задача у меня стоит следующая: в базе данных осуществлять подсчет данных поиском по тексту и дописывать полученные значения в csv-файл.

есть массив
Python
1
ARRAY = [['text1', 2], ['text2', 3], ['text3', 4]]
По данному массиву необходимо следующее - подсчет данных по тексту "text1" и дописывание в файл, во вторую строку полученное количество.

Код я пробовал писать с различными вариантами, но не получается сделать так, чтоб неизменяемые строки оставались в файле, и чтоб все изменяемые строки дописались с изменениями.

Python
1
2
3
4
5
6
7
8
9
10
11
12
for item in ARRAY:
    // здесь код подсчета данных из базы
    count = cursor.fetchone()
    number = count[0]
    with codecs.open('file_open.csv', 'r', 'utf-8') as r:
      with codecs.open('file_close.csv', 'w', 'utf-8') as w:
        lines = r.readlines()
        for j, line in enumerate(lines):
          if j == item[1]: // если номер строки равен цифре, относящейся к тексту из массива
            lines[j] = lines[j].rstrip('\n') + ',' + str(number) + '\n'
          w.write(line)
          w.write(lines[j])
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.04.2019, 14:24
Ответы с готовыми решениями:

Как изменять несколько строк кода одновременнно в редакторе кода, например в VS Code?
Ни раз видел, что преподаватели в интернете выделяют несколько идентичных строк кода и изменяют их разом. Не понимаю даже как это...

Удалить несколько строк в файле
Dim SB As New System.Text.StringBuilder Dim S() As String =...

Как изменять 1 байт в бинарном файле?
Здравствуйте! Требуется помощь. Необходимо создать неcколько исполняемых файлов под windows, позволяющих изменять 1 байт в файле...

3
29 / 21 / 8
Регистрация: 23.10.2018
Сообщений: 51
Записей в блоге: 3
04.04.2019, 09:55
Цитата Сообщение от Sognatore Посмотреть сообщение
дописывать полученные значения в csv-файл
а если создать новый файл, и туда уже записывать изменённый текст?
0
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
04.04.2019, 10:08
Sognatore, не получилось, как минимум, потому что флаг "a" отвечает за дозапись.
0
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
04.04.2019, 13:11
Sognatore, как направление
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def inpgen(text1,text2,text3,text4):
    mdict={k: i + 1 for i, k in enumerate([text1, text2, text3,text4])}
 
    for i,j in mdict.items():
        mlist.append(len(i))
    print(mlist)
    with open(my_filename +'.'+fext2 , 'w', encoding='utf-8') as fp:
        print(mlist,file=fp,sep="\n")
    fp.close()
    return mdict
if __name__ == '__main__':
    my_filename=input("имя файла" )
    fext2='csv'
    mlist=[]
    mdict=()
 
    text1=input("значени ")
    text2=input("значени ")
    text3=input("значени ")
    text4=input("значени ")
    inpgen(text1,text2,text3,text4)
Добавлено через 2 минуты
флаг на дозапись a б забыл, а вот вторая строка, это за Вами)

Добавлено через 1 минуту
модификкатор записи будет a

Добавлено через 9 минут
поправил код
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def inpgen(text1,text2,text3,text4):
    mdict={k: i + 1 for i, k in enumerate([text1, text2, text3,text4])}
 
    for i,j in mdict.items():
        mlist.append(len(i))
    print(mlist)
    with open(my_filename +'.'+fext2 , 'w', encoding='utf-8') as fp:
        print(" ",file=fp)
    with open(my_filename +'.'+fext2 , 'a', encoding='utf-8') as fp:
        print(mlist,file=fp,sep="\n")
    fp.close()
    return mdict
if __name__ == '__main__':
    my_filename=input("имя файла" )
    fext2='csv'
    mlist=[]
    mdict=()
 
    text1=input("значени ")
    text2=input("значени ")
    text3=input("значени ")
    text4=input("значени ")
    inpgen(text1,text2,text3,text4)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.04.2019, 13:11
Помогаю со студенческими работами здесь

В текстовом файле FileIn записано несколько строк
В текстовом файле FileIn записано несколько строк, содержащие различные символы и целые числа, разделенные пробелами. Описать функцию...

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

Нужно дополнить код, чтобы программа считывала несколько строк в текстовом файле
#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <locale.h> int main() { setlocale(LC_CTYPE,...

Как добавить строку по номеру в бинарном файле
программа представляет собой текстовый редактор, класс - бинарный файл (производный от fstream) структура : двусвязный циклический список...

Как заменить определённую строку (по номеру) в файле?
Как заменить определённую строку(по номеру) в файле???


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Подключение 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 - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru