The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск Vagrant 2.0, инструментария для создания виртуальных ..., opennews (??), 12-Сен-17, (0) [смотреть все] +1

Сообщения [Сортировка по времени | RSS]


9. "Выпуск Vagrant 2.0, инструментария для создания виртуальных ..."  +1 +/
Сообщение от AntonAlekseevich (ok), 12-Сен-17, 07:21 
> что может быть лучше руби для скриптов?

Python, BASh, !!!Perl!!!
Конечно если умеете на этом писать.

Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

10. "Выпуск Vagrant 2.0, инструментария для создания виртуальных ..."  +/
Сообщение от Аноним (-), 12-Сен-17, 08:30 
не проще ли просто писать на руби? Хотя бы потому, что из всего выше перечисленного он банально самый молодой
Ответить | Правка | Наверх | Cообщить модератору

14. "Выпуск Vagrant 2.0, инструментария для создания виртуальных ..."  +2 +/
Сообщение от freehckemail (ok), 12-Сен-17, 09:23 
Поддерживаю, только без python.

Странные там вещи. Ну вот взять хотя бы fsutil. Ну вот кому пришло в голову, что при копировании файлов, надо копировать и время, и отменить этого никак нельзя? По-моему адекватнее всего было бы сделать копирование полностью аналогичным команде cp.

Ответить | Правка | К родителю #9 | Наверх | Cообщить модератору

18. "Выпуск Vagrant 2.0, инструментария для создания виртуальных ..."  –2 +/
Сообщение от Аноним (-), 12-Сен-17, 10:27 
Как будто при наличии необходимых полномочий у копирующего, cp не переносит права копируемых файлов.
Ответить | Правка | Наверх | Cообщить модератору

19. "Выпуск Vagrant 2.0, инструментария для создания виртуальных ..."  +/
Сообщение от freehckemail (ok), 12-Сен-17, 10:35 
> Как будто при наличии необходимых полномочий у копирующего, cp не переносит права
> копируемых файлов.

Извиняюсь, другое было в голове, когда писал коммент. Не привилегии, а время. atime, ctime, mtime.

Ответить | Правка | Наверх | Cообщить модератору

37. "Выпуск Vagrant 2.0, инструментария для создания виртуальных ..."  –1 +/
Сообщение от Аноним (-), 20-Сен-17, 21:02 
> Странные там вещи. Ну вот взять хотя бы fsutil

Взять можно, откуда-нибудь, потому что в питон такого нет, есть shutil. Что сразу показывает степень познания. И, конечно же, в https://docs.python.org/2/library/shutil.html видим вагон вариантов: с копированием времени и без.

Почему-то ругают питон чаще всего люди, которые о нём понятия не имеют..

Ответить | Правка | К родителю #14 | Наверх | Cообщить модератору

38. "Выпуск Vagrant 2.0, инструментария для создания виртуальных ..."  +/
Сообщение от freehckemail (ok), 21-Сен-17, 04:38 
>> Странные там вещи. Ну вот взять хотя бы fsutil
> Взять можно, откуда-нибудь, потому что в питон такого нет, есть shutil. Что
> сразу показывает степень познания. И, конечно же, в https://docs.python.org/2/library/shutil.html
> видим вагон вариантов: с копированием времени и без.
> Почему-то ругают питон чаще всего люди, которые о нём понятия не имеют..

Пфффф, я и не утверждал, что я в этой бяке разбираюсь. Ну попутал названия, с кем не бывает? :)

Но факт вот какой: мне подсунули install-скрипт на питоне, который для рекурсивного копирования директорий использовал copytree. Который, внезапно, использует copy2, копирующий ещё и stat-ы.

А мы по разнице atime-ов определяем список файлов, которые войдут в пакет. Угадайте, на что мы нарвались.

Так что может там и есть вагон вариантов, но как всегда почему-то нету того, который был нужен нам. Не, мы конечно всё написали, но противно, жуть: почему я, не питонист ни разу, должен тратить время, чтобы находить вот такие вот заморочки, дебажа то, что должно просто работать прямо из коробки?

И вот ещё забавная какая штука: в новых версиях питона можно в copytree подменить copy2 на copy, в старых -- нельзя. У нас как раз старая. Но собственно забавно не это, а скорее вот что:
https://github.com/python/cpython/blob/master/Lib/shutil.py#...

То есть для директорий stat-ы всё равно копируются, хоть ты тресни. Ну вот и расскажите мне теперь, что они не наркоманы.

Может я ничего и не понимаю в питоне, но я точно понимаю, что вот данный кусок кода -- это дрянь, и так писать не надо. А это, между прочим, ваши стандартные библиотеки.

Ответить | Правка | Наверх | Cообщить модератору

40. "Выпуск Vagrant 2.0, инструментария для создания виртуальных ..."  +/
Сообщение от freehckemail (ok), 12-Дек-17, 13:13 
Напишу сюда, чтоб не забыть, ибо часто обращаюсь к этому посту.

Где в Python нормальный модуль для работы со Stream-ами? Что стриму нужно-то? Если по минимуму, то это конструктор, null-чекер и next.

Ну вот например как в OCaml это сделано: http://caml.inria.fr/pub/docs/manual-ocaml/libref/Stream.html

А в Python я смог максимум что нарыть -- это IO. Но чёрт возьми, это именно что IO, и к стримам это всё имеет весьма опосредованное отношение: https://docs.python.org/2/library/io.html

Может быть я чего-то не доискал, конечно, но мне весьма грустно от того, что по стримам ничего не смог найти толкового. Такое чувство, что каждую элементарную вещь в Python-е надо писать самому, ибо в стандартных библиотеках целая куча всяких разных штуковин, очень похожих на то, что тебе надо, но ни одна толком не является именно тем, что ты ищешь, и ни одну нельзя использовать в качестве строительного кирпичика того, что ты ищешь... :/

UPD: Понял. Похоже, питонисты решили, что куда круче использовать повально генераторы вместо стримов. Короче.


def read_in_lines(file_object):
    while True:
        line = file_object.readline()
        if not line:
            break
        yield line.rstrip("\n")
s = read_in_lines(open('data'))

UPD2: или даже короче


def stream_of_file(filename):
    return (line.rstrip("\n") for line in open(filename))

C open я возможно неправ -- надо ведь закрывать... Ну да фиг с ним.

UPD3: а стрим по файлу они, значит, организуют вот так


def stream_of_fd(fd):
    return (line.rstrip("\n") for line in fd)

def stream_of_file(filename):
    fd = open(filename)
    for line in stream_of_fd(fd):
        yield line
    fd.close()

for line in stream_of_file('data'):
    print(line)
    ...

Ну, что ж, просто я не привык к генераторам... Хотя вообще-то не очень понятно, зачем применять в обязательном порядке генераторы там, где без них можно обойтись.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру