Python-сообщество
- Начало
- » Python для новичков
- » Удалить строку из файла
#1 Ноя. 21, 2013 13:42:03
SmalllSMK Зарегистрирован: 2013-11-21 Сообщения: 2 Репутация: 0 Профиль Отправить e-mail
Удалить строку из файла
Доброе время суток.
Скажите как выполнить удаление строк из файла?
Я только постигаю азы. Это первая программа, особо не пинайте короч…
Надо, что бы перед циклом сработало удаление первой, второй и последней строк.
goods = open('goods.txt') report = open('report.txt') total = open('total.txt', 'a') counter = 0 for every_symbol in goods: every_symbol = every_symbol.split("|") data = [every_symbol[0].strip(), every_symbol[1].strip(), every_symbol[2].strip(), every_symbol[3].strip()] total.write(str(data) + "\n")
Удалить из файла его последнюю строчку. Результат записать в другой файл
Удалить из текстового файла его последнюю строку. Результат записать в другой файл
удалить из текстового файла его последнюю строку. Результат записать в другой файл. У меня есть.

Удалить из текстового файла его последнюю строку. Результат записать в другой файл.
Удалить из текстового файла его последнюю строку. Результат записать в другой файл.

В текстовом файле удалить последнюю строку результат записать в другой файл
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <conio.h> #include <string.h>.
Удалить из текстового файла строку и результат записать в другой файл
Имеется текстовый файл удалить из него ‘к’ строку. Результат записать в другой файл. Ошибка.
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
«скопировать содержимое файла в новый файл, кроме последней строчки».
Бонус1: алгоритм должен работать для длинных строчек превышающих размер ОЗУ.
Бонус2: места на диске впритык, ни одного лишнего байта.
2169 / 1652 / 840
Регистрация: 10.01.2015
Сообщений: 5,186

Сообщение было отмечено Tweezik как решение
Решение
1 2 3 4 5 6 7 8 9 10 11
fr = open('file_r.txt') fw = open('file_w.txt', 'w') frl = fr.readlines() frll = frl[:-1] for line in frll: fw.write(line) fr.close() fw.close()
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Удалить из файла третью строку и результат записать в другой файл
1. Имеется текстовый файл. Удалить из него третью строку; результат записать в другой файл.
Удалить из текстового файла третью строку. Результат записать в другой файл
Имеется текстовый файл. Удалить из него третью строку. Результат записать в другой файл.

Удалить из типизированного файла пятое число. Результат записать в другой файл
Имеется типизированный файл с числами.Удалить из него пятое число.Результат записать в другой файл

Удалить из файла первую строку, в конце которой стоит вопросительный знак. Результат записать в другой файл
Имеется текстовый файл. Удалить из него первую строку, в конце которой стоит вопросительный знак.

Удалить последнюю строку из файла и записать в другой
Вам дан текстовый файл in.txt. Требуется удалить из него последнюю строку, и записать получившийся.
Удалить последнюю букву в каждом слове и записать результат в новый файл
Файл содержит слова. Удалить последнюю букву в каждом слове и записать результат в новый файл.

Удалить последнюю букву в каждом слове и записать результат в новый файл
Файл содержит слова. Удалить последнюю букву в каждом слове и записать результат в новый файл.
Как удалить последнюю строку в файле?

Если файлы ооочень большие, то чтением всего файла построчно в память и записью в новый файл не справиться!
Используйте модуль mmap. Переместитесь по seek на 5-10 максимально возможных строчек от размера файла, просканируйте строчки, возьмите размер последней строки и обрежте файл через resize.
Таким методом можно работать с любыми размерами файлов и очень быстро делать инплейс редактирование!
https://docs.python.org/3.0/library/mmap.html
В дополнение, если искомая строка для удаления находится не в самом конце файла, то кроме resize нужно еще и использовать move.
Ну и немного примеров здесь https://pymotw.com/2/mmap/
Ответ написан более трёх лет назад
Если файлы ооочень большие, то чтением всего файла построчно в память и записью в новый файл не справиться!
Используйте модуль mmap.
Если файлы действительно ооочень большие, то для mmap может не хватить адресного пространства. Но если у файла есть seek, то можно читать файл с конца в буфер фиксированного размера и искать конец строки в нём, а потом обрезать файл по найденному смещению.

jcmvbkbc, в исходники не смотрел, но наверняка там используют seek64 и остальные вызовы xxx64. Как минимум надеюсь. Ну или ваш способ тоже хорош, если resize64 внутри, а так — те же грабли 🙂 тогда только копированием.
Как удалить из всех TXT файлов последнюю пустую строку с помощью BAT, может на VBS решение есть. Файлы в одной папке.
Но нужно указывать путь к файлу. Можно ли как то видоизменить этот код чтобы действовал на все содержимое папки на файлы TXT?
Заранее спасибо за ответ!
Лучший ответ
Учитывая Ваш предыдущий вопрос и мой ответ — переделать надо так:
set file1=1.txt
set file2=2.txt
set tmpf=%TEMP%\%~n0-tmp.txt
del «%file2%» /q 2>nul
del «%tmpf%» /q 2>nul
for /f «usebackq delims=» %%i in («%file1%») do (
rem — Здесь изменения и здесь обрезается перенос строки—
< nul set /p x=%%i>«%file2%»
goto exitFirst
)
if not exist «%file2%» (
echo Error : file %file2% not exist
exit
)
for /f «usebackq skip=1 delims=» %%i in («%file1%») do echo %%i>>»%tmpf%»
if not exist «%tmpf%» (
echo Error : temp file %tmpf% not exist
exit
)
move /y «%tmpf%» «%file1%» >nul
Степан РогавМастер (1633) 6 лет назад
и что каждый файл будет открывать и удалять строку ?
а как можно примерно в таком цикле сделать так чтоб код заработал и любой ли код будет работать ?
for /l %%i (1,1,10) do ( kod )
нихера не сработал столько мучался искал да так и ни че не смог сделать с темой вопрос и код уже удалил полностью который был.
он последнюю строку удалял, но не хватало того чтобы он открывал каждый файл и удалял и я сделал так for /l %%i 1,1,10 do (
set file =%%i
set file =result%%i что ли как то так
но дальше там надо было засунуть сюда же ( циклы и всякая хрень чужой код )
и нихера не сработало.
. Гений (84746) Читайте внимательнее этот код то что просили в прошлом ответе. https://otvet.mail.ru/question/202045505 (комменты) for /f «usebackq delims=» %%i in («%file1%») do ( rem — Здесь изменения и здесь обрезается перенос строки— < nul set /p x=%%i>«%file2%» goto exitFirst ) Вот это обрежет перенос строки у первой строчки в файле указанном в file1
Степан РогавМастер (1633) 6 лет назад
с 9 часов до 4 вечера сидел думал че делать че делать. а sed загуглил попытался скачать нихера не нашел ладно все забыл больше не буду так долго искать результат лучше поиграю.
. Гений (84746) 6 лет назад
Вынесу поближе к корню =))
—
В случае с вопросом, если в файле одна строка, то так — в текущей папке все .txt файлы будут обрезаны по одну строку без переноса строки:
@echo off
setlocal enabledelayedexpansion
for %%i in (*.txt) do (
set /p x=< nul set /p=!x!>«%%i»
)
Остальные ответы
может так * или **.txt. и батник желательно в папку или в диск Д чтоб путь не указывая.
не уверен проверь.
Вася ВасечкинМыслитель (5437) 6 лет назад
Не сработало
. Гений (84746) Из всех txt файлов в папке и подпапках или в конкретной папке? Смотрю опять не спите? 😉
