35 / 33 / 19
Регистрация: 22.01.2015
Сообщений: 209
1

Перезапись строки в файле

27.04.2017, 13:05. Показов 7721. Ответов 2
Метки нет (Все метки)

Приветствую всех!
Тут возникла необходимость перезаписать единственную строку в файле.

1. Прочитать файл;
2. Найти искомую строку;
3. Отсортировать содержимое строки;
4. Записать измененную строку(желательно, но необязательно в тоже самое место).

Ну с первыми двумя пунктами более или менее ясно, то с третьим и четвертым уже не так очевидно(если не сказать более).

В пример приведу файл make.conf, в которой надо сортировать третью строку:
Bash
1
2
3
4
5
............
PYTHON_SINGLE_TARGET="python3_4" 
USE="-* X alsa nls ncurses zlib readline xattr unicode asm cxx threads iptables berkdb ipv6 bzip2 mime jit acl" 
PORTDIR="/usr/portage"
...........
С какой стороны к этому подойти?
Спасибо!
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.04.2017, 13:05
Ответы с готовыми решениями:

Перезапись отдельно одной строки в CSV файл
Возможно ли вообще такое - записать одну строку в фаил? Пример: у меня CSV фаил 1000 строк. Я хочу...

перезапись строки в файле
Здравствуйте! Такая задумка: в таймере записывается строка в файл(StreamWriter,sw.write("dsfs");,...

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

Можно ли осуществить перезапись строки в файле
Итак,может не совсем правильная формулировка проблемы,но постараюсь изложить ее.Работа идет с...

2
Эксперт Python
5403 / 3827 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
27.04.2017, 14:02 2
Лучший ответ Сообщение было отмечено Delvin-fil как решение

Решение

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

Python
1
2
3
4
5
6
7
8
9
with open('make.txt','r+') as f:
    lines = f.readlines() # прочитать файл в список строк
    str_parts = lines[1].split('=')  # делим вторую строку USE="-* X alsa nls ncurses ....  на две части
    #print(str_parts)
    new_str = str_parts[0] + '=' + '"' + ' '.join(sorted(str_parts[1].strip().replace('"','').split())) + '"' + '\n'
    print(new_str)
    lines[1] = new_str # записать в то же место измененную строку
    f.seek(0)         # указатель файла на начало
    f.writelines(lines)
Если сортировка по умолчанию не совсем устраивает - то нужно уже указать sorted как мы хотим сортировать.

Добавлено через 11 минут
P.S. Если положение строки неизвестно - тогда можно в цикле по полученному списку поискать проверкой на вхождение подстроки USE.
1
35 / 33 / 19
Регистрация: 22.01.2015
Сообщений: 209
27.04.2017, 14:11  [ТС] 3
Спасибо! Работает как задумал!
Примерно в этом ключе и думал, но оформить мысль не удалось!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.04.2017, 14:11
Помогаю со студенческими работами здесь

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

Сохранение и перезапись в файле
Добрый вечер! Я заполняю таблицу и при выходе из формы задаю сообщение о том, желаю ли я сохранить...

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

Перезапись байтов в файле
Всем привет! Вопрос возможно к гуру. Подскажите как поменять в бинарном файле байт (или группу...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru