Как считать последнюю строку из файла с
В обработке должны быть загружены данные с текстового файла, причём только с его последней строки. Подскажите пожалуйста как на неё перейти?
Т.ПолучитьСтроку(Т.КоличествоСтрок())
ну и зачастую ничего не загрузится.. потому что предпоследняя строка закончена энтером.
(2)Пустить в цикле -1 пока не будет нке пустая строка
(2,3) извращенцы совсем. пусть смотрит чем файл заканчивается, и кстати ни кера не ентером заканчивается. это смотря как выгрузили
(4) ясен пень. хрен ли тут все рассказывать — если челу лень было ЖКК открыть.
(2,4) не знал ничего об этих особенностях. Меня интересует последняя строчка файла mlg.
Помогите пожалуйста! Смотрю в Книге знаний «Парсинг файла MLG (журнал регистрации 1С:Предприятие 7.7)». Вместо цикла по чтению следующей строки файла хочу сделать переход на последнюю строку. Добавляю:
При запуске обработки выдаётся сообщение «Поле агрегатного объекта не обнаружено (КоличествоСтрок)». Что сделал не так? Извините за дилетантство.
(8) В цикле прочитай все строки, и запомни в переменную.
Тебе вообще зачем нужно-то?
Строка инициализации переменной file ?
Файл слишком большой, а мне надо получить ссылку на последний объект, с которым выполнялась работа. Он содержится в последней строке файла mlg. И чтобы не читать построчно весь файл — проще наверное сразу перейти на последнюю строку?
(11) А зачем тебе это? Если для регистрации изменений, то у меня получше кое-что есть.
(11) несомненно, сделай проекцию файла с конца и смещайся в поисках предыдущей #13#10
(13) Не знаю скрипт поддерживает ли это. На Дельфи-то все можно.
Да и непонятно зачем такие вещи. Типо чтобы было?
(15) мне при выполнении обработки надо получить данные из последнего проведенного в базе документа. сведения об этом документе я могу получить только в файле mlg. Вот для этого и надо
(11)(16) romix, я очень благодарен за участие, но мне на данный момент необходимо именно то, что указано в вопросе.
Как вывести последнюю строку из файла?
У меня есть файл «тест.txt» в нем есть 10 строк
Как сделать вывод последней строки?
- Вопрос задан более трёх лет назад
- 6990 просмотров
Комментировать
Решения вопроса 1
f_read = open("тест.txt", "r") last_line = f_read.readlines()[-1] print(last_line)
Ответ написан более трёх лет назад
Нравится 4 4 комментария
TheMergus @TheMergus Автор вопроса
Как удалить эту строку после вывода?

deepblack @deepblack Куратор тега Python
TheMergus, вы отметьте решением ответ. Потом задавайте новый вопрос.
TheMergus @TheMergus Автор вопроса
TheMergus, Имелось ввиду задать новый вопрос не в комментариях, а принципиально новый вопрос создать. Ну да ладно.
Удалить последнюю строчку можно, например, так:
f = open("тест.txt", "r+") lines = f.readlines() lines = lines[:-1] f.seek(0) f.truncate() f.write("".join(lines))
Ответы на вопрос 0
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Python
- +1 ещё
Error Connecting: HTTPSConnectionPool(host=’url’, port=443) как решить?
- 1 подписчик
- 3 часа назад
- 11 просмотров
Как считать последнюю строку из файла с
Argument ‘Topic id’ is null or empty
Сейчас на форуме
© Николай Павлов, Planetaexcel, 2006-2023
info@planetaexcel.ru
Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.
| ООО «Планета Эксел» ИНН 7735603520 ОГРН 1147746834949 |
ИП Павлов Николай Владимирович ИНН 633015842586 ОГРНИП 310633031600071 |
Как считать последнюю строку из файла с
Здравствуйте.
Прошу подсказать, как v8 прочитать текстовый файл начиная с последней строки?
При последовательном доступе похоже читается только с начала.
А другого способа доступа чтото не нашол.
Спасибо
Прочитать сначала в буфер, а потом уже из буфера — как левая нога пожелает.
В буфер читать не хочу т.к. файл сильно большой.
Хочу сразу читать с конца !
Дык не пихай в буфер сразу весь файл, а только последние строки.
А как же это я туда последние строчки запихну?
(4)Ну к примеру в файле десять строк, читаешь с первой по восьмую в Null, а с восьмой по десятую в буфер.
Кто ж данные в текстовом файле хранит, чудо?
(5) Это здорово, только не понятно как узнать скока в файле строк.
Его для этого придется сначала весь прочитать
(5) Да и в NULL читать — как то уж больно кондово.
Где начало того конца, которым оканчивается начало? (с)
А по сути сдаётся мне, что только с помощью WSH
Текст = Новый ТекстовыйДокумент;
Текст.Прочитать(«длодло»);
КолечествоСтрок = Текст.КоличествоСтрок();
Пока КоличестувоСтрок > 0 Цикл
Сообщить(Текст.ПолучитьСтроку(КоличествоСтрок));
КоличествоСтрок = КоличествоСтрок — 1;
КонецЦикла;
зы
программисты нах.
(10) Уважаемый
То что Вы написали, это и есть последовательное чтение файла в буфер
причем именно сначала.
А мы тут думаем как бы прочитать файл сконца.
Бо не раздувать этот буфер и впустую не тратить время на чтение.
(11)Ну сказале же уже, либо WSH, либо последовательное чтение в буфер, чтобы не засорять память ненужные строки находящиеся в начале можно выкидывать.
Ты бы вообще объяснил для чего тебе это нужно, может проще решение есть.
(11) Ну, звыняй в 1С такого нету. Чего вы там всегда такое мастерите?
(+13) очумелые ручки. :))))
(10) ВОТ!
Ап стену.
Рождаются же программистами.
Возьмите Нетленку. Там. Это. Реализовано.
Свойства
Позиция
Размер
Процедура/функция
ОкрытьФайл()
ПрочитатьФайл()
(12) Да вот собственно хотелось убедиться, что в 8.1 без использования внешних компонент можно только сначала файл прочитать.
А нужно для того, чтобы шипко длинные файлы обрабатывать т.к. известно, что нужная информация в них чаще находится ближе к концу.
А файлы не мои я их в готовом виде получаю.
а что приходит ? ну, что в этих файлах?
(в качестве бреда) Создаем DBF-файлик, заливаем в него строки текстового файла. После этого можно «читать» как угодно :))
(19) Берем открываем в ФАРе этот файл по Ф3 — и жмем Контрол+Енд, читаем. Более того, если этот текстовый файл в данный момент пишется, то мы сразу увидим добавляемые строки.
(21) Не факт. Смотря в каком режиме «своместности» был открыт файл.
(0) Аф_фтар признайся, «Отче наш» хочешь читать?
(23) Британнику. Раздел — благодарности.
(24) Так не интересно.
ГОСПОДА
В файлах котировки ценных бумаг
Но какое это имеет значение?
(26) Ойк. 500$ и все вам сделаю.
(26) Как это какое? Попробуй громко и отчётливо читать «Отче наш» встав возле церкви, сразу узнаешь какое.
+ (28) Задом наперёд конечно читать.
(26) и что текстовый файл котировки ценных бумаг приближается к 1 ГБ? Это фантастика.
текстовой файл по своей сути последовательно пишется и читается. Хотите «произвольный доступ» — пользуйте соответствующие структуры
(31) Что в этом мире не есть «текстовый файл» ? 🙂
в конце концов забросить с таблицу sql и выбрать нужное. если fso и т.п. — это медленно.
(32) ну грубо говоря все состоит из символов. Но txt и mdf+ldf — две большие разницы по возможностям
Чтение с конца м.б. придется имитировать через многократное чтение, буферизуя строк по 100. А м.б. там метод seek есть, надо смотреть.
Или можно разрубить на мелкие файлики, только потом не забыть их стереть.
ALL: после прочтения постов, мой вариант (19) мне уже не кажется бредом 🙂
(36) Ага. Сделать такую мелкую гальотинку и порубить на файлики. авторов 🙂
(37) не бред. Только в dbf будет медленно. Bulk Insert или DTS так просто не обгонишь.
(38) Медленно — согласен. Но пусть сначала автор озвучит сколько строк в его файлике — кроме того что он «сильно большой». А то может быть и не стоит огород городить.
Scripting.FileSystemObject позволяет пропускать данные (Skip).
Но, чтобы прочитать последнюю строку файла нужно сначала найти разделитель последней и предпоследней строк, а это можно сделать только последовательным чтением файла сначала.
Также хочу заметить, что данная функция честно читает файл по строкам, а не весь сразу в память, чем существенно экономит память и повышает производительность.
Хотя, можно читать файл посимвольно назад.
Для этого можно делать следующее:
Функция ЧитаемФайлВЗад(ИмяФайла)
FsoObject=new ActiveXObject(«Scripting.FileSystemObject»);
Файл=FsoObject.GetFile(ИмяФайла);
РазмерФайла=Файл.Size;// получили размер файла
Файл=0;// сбросили ссылку на всякий пожарный
СтрокаНакопитель=»»;
for(ТекущийБайт=1;ТекущийБайт <РазмерФайл;ТекущийБайт++)do
УказательФайл=FsoObject.OpenTextFile(ИмяФайла,1,false,false);
// мы открыли файл ИмяФайла
// для чтения-1
// не создавать если его нет-false
// без Unicode-false
УказательФайл.Skip(РазмерФайла-ТекущийБайт);
ПрочитанныйБайт=УказательФайл.Read(1);// читаем байт
КодБайта=Asc(ПрочитанныйБайт);
// дело в том, что символ 0 передаётся, как строка нулевой длины
СтрокаНакопитель=СтрокаНакопитель+»,»+String(КодБайта);
УказательФайл.Close();// не забываем закрыть файл
// к сожалению, в системе нет метода Rewind, чтобы вернуться назад
// теоретически, есть метод Line, возвращающий номер строки
// но я не уверен, что там будет правильная информация, после Skip
enddo;
Message(СтрокаНакопитель);
КонецФункции
P.S. код писался с лёту, поэтому работоспособность не гарантиую (по крайней мере описание цикла не будет работать ни в одном мне известном языке) — перевод с JavaScript на 1С — сложное дело.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс