Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
3 / 2 / 2
Регистрация: 24.05.2016
Сообщений: 248

ReadLine return '' Python

28.07.2019, 23:45. Показов 2080. Ответов 11
Метки file (Все метки)

Студворк — интернет-сервис помощи студентам
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
def numOfLines(file):
    i = 0
    for i, l in enumerate(v):
        pass
    return i + 1
 
def doJob():
    log= open(LogPath, 'r', encoding='UTF8')
 
    lastPos = numOfLines(log)
 
    try:
        while True:
            #def work here
            clientLog.tell()
            newPos = numOfLines(log) - 1
            for Index in range(0, newPos):
                lastPos = lastPos + Index + 1
                data = clientLog.readline(lastPos) # Возвращает '', тоесть - ничего
                print(data + str(Index))
            time.sleep(int(delay))
    except KeyboardInterrupt:
        log.close()
        return False
Я пытаюсь в данном коде при изменении файла вывести появившиеся строки, строки пишутся всегда в конец файла. Прочитал, что надо перемещать указатель, делаю с помощью tell(), но data все-равно "Возвращает '', тоесть - ничего"
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.07.2019, 23:45
Ответы с готовыми решениями:

Проблемы с Python return if-else one line в классе
Не могу понять почему мой код выдает ошибку. Можете подсказать почему так? class Amir: Max=100 Min=0 def Short(arg): ...

Какая разница между Console.ReadLine() и Сonsole.In.ReadLine()?
какая разница между Console.ReadLine() и Сonsole.In.ReadLine() ?

Чем отличаются Console.In.ReadLine() и Console.ReadLine() друг от друга?
Увидел в какой-то задаче Console.In.ReadLine() и хотел узнать в интернете, чем отличается от Console.ReadLine(), но так ответа и не нашел

11
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 29
29.07.2019, 08:41
FastMailSend, странное что-то ты делаешь... я верно понимаю, что тебе заранее известен размер фйла в строках, ты открываешь его и если строк больше то выводишь в консоль все новые (последние) строки?

вот тут что проиходит?
Цитата Сообщение от FastMailSend Посмотреть сообщение
def numOfLines(file):
* * i = 0
* * for i, l in enumerate(v):
* * * * pass
* * return i + 1
зачем тут file который не используется? что такое v? зачем создавать перечисление и потом пассить если есть функция len()?
0
3 / 2 / 2
Регистрация: 24.05.2016
Сообщений: 248
29.07.2019, 10:58  [ТС]
Размер файла в строках мне неизвестен, поэтому с помощью numOfLines() я получаю их кол-во. Я делал код более читаемым, поэтому не поменял "v" на "file". А как мне поможет функция len()? Она же просто выдать кол-во символов.

Код который я дал работает, кроме вывода "data "
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 29
29.07.2019, 11:22
Цитата Сообщение от FastMailSend Посмотреть сообщение
А как мне поможет функция len()?
также как и всем -посчитает количество (numOfLines -это в джаве, у нас питон)
Python
1
2
3
def lines_count(file):
    with open(file) as f:
        return len(f.readlines())
в остальном не понял твою задумку -как ты узнаешь сколько и каких строк добавилось, если не отслеживаешь состояние файла (например размер)? можешь написать что по твоему мнению проиходит в функции doJob?
0
3 / 2 / 2
Регистрация: 24.05.2016
Сообщений: 248
29.07.2019, 13:41  [ТС]
Python
1
2
clientLog.tell() # устанавливает указатель на последнюю строку
newPos = numOfLines(log) - 1 # считывает с этого указателя новые строки. Если их 0, то я ничего не делаю
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 29
29.07.2019, 13:45
FastMailSend, а откуда там новые строки возьмутся? в параллельном потоке пишутся?
ты покороче пиши, чтобы страниц на 5 растянуть обсуждение, не вдавайся особенно то в подробности, дай немного подагадываться, предположений построить.
0
3 / 2 / 2
Регистрация: 24.05.2016
Сообщений: 248
29.07.2019, 14:02  [ТС]
Строки пишу туда не я, а логгирует другой клиент(не мой). Да и я спрашивал, почему readline() возвращает '', а не правильность подсчета кол-ва строк, который был написан за 2 секунды и доказал, что он все правильно делает. Он специально сделан так, чтобы при перемещении указателя на конец файла он подсчитывал новые строки(а он это делает правильно), а не читал все сначала. + откуда мне знать, какая вам информация пригодиться, на все вопросы по мере поступления я отвечал
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
29.07.2019, 14:24
Цитата Сообщение от FastMailSend Посмотреть сообщение
Прочитал, что надо перемещать указатель, делаю с помощью tell(),
tell ничего никуда не перемещает.
В коде отсутствует логика.

Добавлено через 1 минуту
Цитата Сообщение от FastMailSend Посмотреть сообщение
почему readline() возвращает '',
Потому что достигнут конец файла.
1
3 / 2 / 2
Регистрация: 24.05.2016
Сообщений: 248
29.07.2019, 23:22  [ТС]
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def doJob():
    log = open(LogPath, 'r', encoding='UTF8')
    lines = log.readlines()
    startLine = len(lines)
 
    try:
        while True:
            endLine = len(lines)
            for Index in range(startLine, endLine):
                data = lines[Index]
                print(data)
            startLine = endLine
            clientLog.seek(0)
            lines = log.readlines()
            time.sleep(int(delay))
    except KeyboardInterrupt:
        log.close()
        return False
Данный код рабочий, но он всегда читает файл полностью, а потом отбираем нужную инфу, что очень неприятно, ведь файл может весить гигабайты. Есть ли возможность оптимизировать это?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
30.07.2019, 02:06
Лучший ответ Сообщение было отмечено FastMailSend как решение

Решение


P.S. Второй вызов os.path.getsize в условии это опечатка. Нужно просто заменить на переменную filesize.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
30.07.2019, 02:13
Кстати, использовать seek в текстовом режиме не рекомендуется документацией.
1
3 / 2 / 2
Регистрация: 24.05.2016
Сообщений: 248
30.07.2019, 10:57  [ТС]
спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.07.2019, 10:57
Помогаю со студенческими работами здесь

Что это isOk(int s),setAge(int g){if(isOk(g){age=g;return true;}else{.;return false;}}.getName(){return name;}?
package com.company; import java.io.Serializable; public class person implements Serializable { protected String name; ...

Насколько понял потоки в Python ничего не возвращают и return в них бесполезен. А что же тогда делать если из функции
...в потоке нужно именно вернуть результат, а не просто вывести через print? Гугль на это приводит какие-то зубодробительные решения с...

Что такое в jquery и java return false и return true
Если я правильно понимаю, то return false отменяет действие по умолчанию, например клик по ссылке, а return true это наоборот приводит в...

Сокращение кода return console.log/warn/error и return elem.click()
Иногда хочется сократить код if (!element) { console.log('element not found') return } // code... до if (!element)...

В чем разница между return и return false/true
Привет всем. Вот подскажите плиз) return; return false; return true; расскажите пожалуйста об етих операторах.. чем они...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru