• Как запаковать датафрейм в zip архив содержаший несколько csv файлов?

    Формат ZIP поддерживает стриминг данных файлов. Нужно просто для каждого CSV сначала генерировать заголовок, а затем отдавать строчку с данными генератору CSV. Тот, в свою очередь, должен заполнять буфер для стриминга Deflate.

    Не нужно путать GZip и ZIP. Это совершенно разные форматы. ZIP - это контейнер (архив) для множества файлов и поддерживает различные виды сжатия. А GZip представляет из себя формат для стриминга лишь одного файла.
    Ответ написан
    Комментировать
  • Как обработать нажатие клавиш клавиатуры?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    import sys
    from PyQt5 import QtCore, QtWidgets
    from PyQt5.QtWidgets import QMainWindow, QLabel, QGridLayout, QWidget
    from PyQt5.QtCore import QSize    
    
    
    class ExampleWindow(QMainWindow):
        def __init__(self):
            super().__init__()
    
            self.setMinimumSize(QSize(320, 240))
            self.setWindowTitle('Example')
    
            central_widget = QWidget(self)
            grid_layout = QGridLayout(central_widget)
            self.setCentralWidget(central_widget)
    
            self._label = QLabel('', self)
            self._label.setAlignment(QtCore.Qt.AlignCenter)
            grid_layout.addWidget(self._label, 0, 0)
    
            self._counter = 0
    
        def keyPressEvent(self, event):
            if event.key() == QtCore.Qt.Key_Q:
                self._counter += 1
                self._label.setText('Клавиша Q нажата {} раз'.format(self._counter))
            event.accept()
    
    
    if __name__ == "__main__":
        app = QtWidgets.QApplication(sys.argv)
        main_window = ExampleWindow()
        main_window.show()
        sys.exit(app.exec_())
    Ответ написан
    7 комментариев
  • Как уже на собеседовании понять, какое в компании качество кода?

    @g_s_e
    Ну вообще стоит начать с того, что Вы подразумеваете под говонокодом. Зачастую говнокод - это не только криво написаный метод/класс, это еще плохо оптимизированная бд, кривая архитектура приложения и неверно выбранные инструменты для решения задач поставленных перед проектом. В любом случае проект делают люди, которые меняться на проекте, посему нужно выяснить детали самого подхода разработки проектов в самой компании:
    - спросить сколько проект находится в разработке, степень покрытия тестами, если прокт древний и не покрыт, то плохо;
    - если проект древний, то узнать обновляются ли на нем версии инструментов/фреймворков на более новые, выяснить что с обратной совместимостью;
    - спросить как происходит процесс мерджа новых фич, если если через мерджреквесты на тимлида, которые он аппрувит или отклоняет, то уже не плохо, и Вам подскажут, проконтролируют, что не плохо. Eсли пуш в ветку девелопмент, то плохо;
    - если используют мерджреквесты на тимлида, то спросить используется ли git-flow, если да, то хорошо, это минимизирует варинт того, что Вы получите кучу крешей от того, что было запушино коллегами, если не используется, то плохо;
    - узнать что проиходит с CI на проекте, если есть тесты, то запускаются ли они при деплойменте, если да то хорошо, нет - плохо;
    - если это web проект, на котором используется бекенд и фронтенд фреймворки, то стоит спросить развернуты ли они на разных серверах, если да то хорошо, если нет то плохо;
    Выяснить это все иначе, чем по косвенным признакам, является маловероятным.
    Ответ написан
    Комментировать
  • Ошибка VK API в Python TypeError: __call__() takes exactly 1 argument (2 given) что исправить?

    subscriptions_list = vkapi.users.getSubscriptions( v = v, user_id=userid, extended=0)['groups']['items']


    Нужно указывать именованные аргументы.
    Ответ написан
    Комментировать