• Какой набор инструментов выбрать для реализации веб-проекта?

    @Realmixer
    Full stack Python (Django) web-developer
    Осмелюсь рекомендовать замечательный фреймворк Django. Почему?
    • Ну во-первых, я в последние годы использую исключительно его и не в курсе, что там у других фреймворков )
    • Во-вторых, в нём есть неплохая админка. Разумеется с регистрацией/авторизацией и правами доступа. Правда без сторонних плагинов права не пообъектные, а на всё множество объектов одного класса. Вот чатика к сожалению нету )
    • В-третьих, в нём есть CBV (class-based views). Это значит, что вьюшки можно писать классами. Соответственно появляется возможность наследовать вьюшки друг от друга, перегружать поля и методы... Но даже если ничего такого не использвать, то код получается очень коротким и лаконичным. Лично я функции с риквестами щупал лишь когда знакомился с фреймворком. Затем меня очень обрадовали CBV и сейчас использую только их. Особенно они подходят для конструирования самодельных админок, если стандартной админки Django будет мало.
    Ответ написан
    Комментировать
  • Как из текстового файла БЫСТРО создать заданное количество файлов с заданным количеством строк Python?

    @kascode
    На мой взгляд лучшим решением будет прочитать большой файл names.txt в list и, соответственно, держать его в памяти.

    Ну а дальше дело техники. Читаем построчно файл с городами. Для каждого города создаём папку с соответствующим именем. В папке файл name.txt. В него осуществяем построчную запись случайной строки из исходного файла с проверкой на дублирование.

    Структуру файла cities.txt я принял такую: [город]|[количество строк для города]
    москва|1000
    санкт-петербург|1100

    __author__ = 'kascode'
    from random import randint
    import os
    
    source = open('names.txt', 'r')
    
    sourcelines = source.readlines()
    sourcelineslen = len(sourcelines)
    
    def readCities():
        with open('cities.txt', 'r') as f:
            citylines = f.readlines()
    
        citieslist = []
        
        # заполняем список данными в формате [['город'], ['число строк']] 
        for line in citylines:
            citieslist.append(line.split('|'))
    
        return citieslist
    
    for city in readCities():
        # создаём папку с именем города
        if not os.path.exists(city[0]):
            os.makedirs(city[0])
    
        file = city[0] + '/name.txt'
        cityout = open(file, 'w')
        written = []        # массив записанных строк
    
        # записываем столько строк, сколько указано для города
        for i in range(1, int(city[1])):
            # берём случайную строку из исходного списка
            sourceline = sourcelines[randint(0, sourcelineslen-1)]
            
            # берём новую пока не найдём не дублирующую
            while sourceline in written:
                sourceline = sourcelines[randint(0, sourcelineslen-1)]
    
            cityout.write(sourceline)
            written.append(sourceline)


    На моей машине обработка файла в 10000000 строк длиной 10-50 символов заняла 0,21с.
    Ответ написан
    Комментировать
  • Как обернуть скобками текст в vim-e

    @SilentFl
    я бы это сделал в виде макроса, который форматирует по две строки. например, например, так (курсор в первой колонке первой строки):
    1) переходим в режим записи макроса "a": qa
    2) форматируем ручками, например так: f_xdwO^C^Cpi: {^C^CjV>jV>f_xdwA<80>kb^M},^C^Cj0
    (^C^C - это , или , <80> - клавиша (ну или заменить на ^C^CX), ^M - )
    3) завершаем запись макроса: q

    Теперь, если у нас есть 100 строчек, которые надо преобразовать в 50 записей - делаем 50@a и радуемся
    Ответ написан
    Комментировать