Как считать последнюю строку из файла с
Перейти к содержимому

Как считать последнюю строку из файла с

  • автор:

Как считать последнюю строку из файла с

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

Т.ПолучитьСтроку(Т.КоличествоСтрок())
ну и зачастую ничего не загрузится.. потому что предпоследняя строка закончена энтером.
(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 @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

  • 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С — сложное дело.

Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *