Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 16, 2016 17:28:13

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9958
Репутация: +  856  -
Профиль   Отправить e-mail  

Запись в файл, символ \u2020

doza_and
Да блин, век живи век учись. Спасибо! Не думал что в питоне 3 вернут список а не итератор.
Его там и не было. В древние времена был даже xreadlines() (чтобы итерировать). Там всегда был список.

doza_and
Не то что редко. Я так вообще никогда не пишу.
У тебя там ещё pep8 нарушен. Это значит, что ты редко пишешь код (навык выветривается), а ещё не пользуешься автоматическими средствами. Сегодня pep8 проверяется не по памяти, а программно. Где-то запускается программа, а где-то среда следит за этим интерактивно и подчёркивает нарушения прямо во время набора.

pep8. other recomendations
Always surround these binary operators with a single space on either side: assignment ( = ), augmented assignment ( += , -= etc.), comparisons ( == , < , > , != , <> , <= , >= , in , not in , is , is not ), Booleans ( and , or , not ).

Вот твой код сохранил
[guest@localhost py]$ cat cl.py 

import time

t0=time.clock()
with open("aaa.txt","r") as f:
a=list(f.readlines())
# a=f.read()

t1=time.clock()
print(t1-t0)
[guest@localhost py]$

И проверил по pep8
[guest@localhost py]$ python3-pep8 cl.py 
cl.py:4:3: E225 missing whitespace around operator
cl.py:5:20: E231 missing whitespace after ','
cl.py:6:6: E225 missing whitespace around operator
cl.py:9:3: E225 missing whitespace around operator
[guest@localhost py]$

А вот что показывает линтер
[guest@localhost py]$ python3-pylint cl.py
No config file found, using default configuration
************* Module cl
C: 4, 0: Exactly one space required around assignment
t0=time.clock()
^ (bad-whitespace)
C: 5, 0: Exactly one space required after comma
with open("aaa.txt","r") as f:
^ (bad-whitespace)
C: 6, 0: Exactly one space required around assignment
a=list(f.readlines())
^ (bad-whitespace)
C: 9, 0: Exactly one space required around assignment
t1=time.clock()
^ (bad-whitespace)
C: 1, 0: Missing module docstring (missing-docstring)
C: 4, 0: Invalid constant name "t0" (invalid-name)
C: 6, 4: Invalid constant name "a" (invalid-name)
C: 9, 0: Invalid constant name "t1" (invalid-name)


Report
======
7 statements analysed.

Statistics by type
------------------

...

Global evaluation
-----------------
Your code has been rated at -1.43/10

...

[guest@localhost py]$

То есть это о чём говорит - о том, что ты этими вещами не пользуешься (и не помнишь сам). А если не пользуешься, то разговоры о больших проектах как-то сомнительны. В документации тоже не можешь найти по-быстрому описание readlines(), документацией не пользуешься.

doza_and
По поводу разбиения. Да надо правильно выравнивать блоки. Но выравнивать понятное дело не по границам букв, а по лексемам или даже еще более сложным конструкциям характерным для данного типа файлов. Это обычно “\n” или пробелы.
Ага, обычно \n или пробелы, а про контекст не слыхал никогда? Это когда вот эти \n или пробелы могут не быть разделителем в каких-то редких случаях. Допустим, у тебя идёт поток слитых воедино html-страниц. Как ты их разделишь? Вот идёт всё это одной строкой. Ты будешь искать тег
<html>
но я в комментарии напишу
<!-- <html> -->
где-нибудь внутри - и ты попадёшься на это, потому что сложнее регулярок ты не делал ничего (не работал с такими вещами, где надо думать).

doza_and
Если вам нужен зачем-то алгоритм выравнивания по буквам для utf-8 не стесняйтесь, пишите. Насколько я понимаю это пара строчек кода.
Да ты ни одной не написал. Я же предлагал выше написать сворачивальщик для иероглифов, а ты его не потянул. Я так и меряю: не тянешь это - значит, не тянешь целый класс задач. И не учебных уже, а реальных.
Знаешь, откуда берутся бесконечные данные? Да обычный прибор какой-нибудь поставляет информацию - вот тебе и бесконечные данные. Сможешь ли ты их анализировать?

doza_and
При этом существенно поднимется скорость обмена с диском и снизятся затраты памяти.
Да какой там памяти. Нет у тебя строк в программе, чтобы можно было о памяти заморачиваться. То, что ты назвал строками, - это данные обычные, которые всё так же рассматриваются через bytes(). А строки - это вот окно у тебя, например, и ты туда выводишь заголовок. Вот этот заголовок никакого выигрыша не даёт, если он не является юникодовой строкой. Зато если он является юникодовой строкой, то он может быть хоть на китайском, и от локали это зависеть не будет.



Отредактировано py.user.next (Окт. 16, 2016 17:36:30)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version