По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Linux черпал вдохновение из Unix, но Linux - это не Unix, хотя он определенно похож на Unix. Мы объясним основные различия между этими двумя известными операционными системами. Так в чем же разница? Linux - это бесплатное семейство операционных систем с открытым исходным кодом. Unix - это коммерческий продукт, предлагаемый различными поставщиками, каждый со своим вариантом, обычно предназначенным для своего собственного оборудования. Это дорогой и закрытый код. Но Linux и Unix делают примерно одно и то же, не так ли? Более-менее да. Тонкости несколько сложнее. Есть отличия помимо технических и архитектурных. Чтобы понять некоторые влияния, которые сформировали Unix и Linux, нам нужно понять их предысторию. Истоки Unix Unix более 50 лет. Он был разработан на языке ассемблера Digital Equipment Corporation (DEC) на DEC PDP/7 в качестве неофициального проекта в Bell Labs, в то время принадлежавшем AT&T. Вскоре он был перенесен на компьютер DEC PDP/11/20, а затем постепенно распространился на другие компьютеры Bell. Переписывание на язык программирования C привело к появлению в 1973 г. версии 4 Unix. Это было важно, потому что характеристики языка C и компилятора означали, что теперь переносить Unix на новые компьютерные архитектуры было относительно легко. В 1973 году Кен Томпсон и Деннис Ритчи представили на конференции доклад о Unix. В результате запросы на копии Unix хлынули в Bell. Поскольку продажа операционных систем выходила за рамки разрешенного объема деятельности AT&T, они не могли рассматривать Unix как продукт. Это привело к распространению Unix в виде исходного кода с лицензией. Номинальных затрат было достаточно, чтобы покрыть отгрузку и упаковку, а также «разумный гонорар». Unix пришла «как есть», без технической поддержки и исправлений ошибок. Но вы получили исходный код - и вы могли его изменить. Unix быстро завоевал популярность в академических учреждениях. В 1975 году Кен Томпсон провел творческий отпуск от Bell в Калифорнийском университете в Беркли. Вместе с некоторыми аспирантами он начал добавлять и улучшать их локальную копию Unix. Внешний интерес к дополнениям Berkeley вырос, что привело к выпуску первого выпуска Berkeley Software Distribution (BSD). Это был набор программ и модификаций системы, которые можно было добавить в существующую систему Unix, но это не была отдельная операционная система. Последующие версии BSD были целыми системами Unix. Теперь существовало две основных разновидности Unix: поток AT&T и поток BSD. Все другие варианты Unix, такие как AIX, HP-UX и Oracle Solaris, являются их потомками. В 1984 году были сняты некоторые ограничения для AT&T, и они смогли производить и продавать Unix. Затем Unix стала коммерциализированной. Начало Linux Рассматривая коммерциализацию Unix как дальнейшее разрушение свобод, доступных пользователям компьютеров, Ричард Столлман решил создать операционную систему, основанную на свободе. То есть свобода изменять исходный код, распространять модифицированные версии программного обеспечения и использовать программное обеспечение любым способом, который пользователь сочтет нужным. Операционная система должна была воспроизвести функциональность Unix без включения какого-либо исходного кода Unix. Он назвал операционную систему GNU и в 1983 году основал проект GNU Project для разработки этой операционной системы. В 1985 году он основал Фонд свободного программного обеспечения для продвижения, финансирования и поддержки проекта GNU. Все области операционной системы GNU достигли хорошего прогресса - кроме ядра. Разработчики проекта GNU работали над микроядром под названием GNU Hurd, но прогресс был медленным, (сегодня он все еще находится в разработке и приближается к выпуску.) Без ядра не было бы операционной системы. Основной управляющей программой Unix является его ядро. Ядро имеет полный контроль над всей системой. Он имеет подсистемы, которые предлагают услуги для обработки файловой системы, обработки ресурсов, управления памятью, запуска и остановки программ и нескольких других низкоуровневых основных задач. Ядро является сердцем ОС и действует как интерфейс между пользователем и оборудованием. Каждая подсистема ядра имеет определенные функции, такие как параллелизм, виртуальная память, подкачка и виртуальная файловая система. На внешних уровнях архитектуры у нас есть оболочка, команды и прикладные программы. Оболочка - это интерфейс между пользователем и ядром. Оболочка и пользователь вводят команды, интерпретируют эти команды и соответственно вызывают компьютерные программы. В 1987 году Эндрю С. Танебаум выпустил операционную систему MINIX (mini-Unix) в качестве учебного пособия для студентов, изучающих проектирование операционных систем. MINIX была функциональной Unix-подобной операционной системой, но имела некоторые ограничения, особенно в отношении файловой системы. В конце концов, исходный код должен быть достаточно маленьким, чтобы его можно было адекватно изучить за один университетский семестр. Некоторой функциональностью пришлось пожертвовать. Чтобы лучше понять внутреннюю работу Intel 80386 на своем новом ПК, студент-информатик Линус Торвальдс написал в качестве учебного упражнения простой код переключения задач. В конце концов, этот код стал элементарным прото-ядром, которое стало первым ядром Linux. Торвальдс был знаком с MINIX. Фактически, его первое ядро было разработано на MINIX с использованием компилятора GCC Ричарда Столлмана. Кто занимается разработкой? Дистрибутив Linux - это сумма множества различных частей, взятых из самых разных мест. Ядро Linux, набор основных утилит GNU и пользовательские приложения объединены для создания жизнеспособного дистрибутива. И кто-то должен заниматься этим объединением, обслуживанием и управлением - точно так же, как кто-то должен разрабатывать ядро, приложения и основные утилиты. Сопровождающие дистрибутива и сообщества каждого дистрибутива играют свою роль в создании дистрибутива Linux так же, как и разработчики ядра. Linux - это результат распределенных совместных усилий, выполняемых неоплачиваемыми добровольцами, такими организациями, как Canonical и Red Hat, а также отдельными лицами, спонсируемыми отраслью. Каждый коммерческий Unix разрабатывается как единое целое с использованием собственных или жестко контролируемых сторонних средств разработки. Часто они имеют уникальное ядро и разработаны специально для аппаратных платформ, поставляемых каждым поставщиком. Бесплатные производные потока BSD Unix с открытым исходным кодом, такие как FreeBSD, OpenBSD и DragonBSD, используют комбинацию устаревшего кода BSD и нового кода. Теперь они поддерживаются сообществом и управляются так же, как и дистрибутивы Linux. Также важно отметить, что Linux - это только ядро, а не полная ОС. Это ядро Linux обычно входит в состав дистрибутивов Linux, что делает его полноценной ОС. Дистрибутив Linux - это операционная система, созданная из набора программного обеспечения, построенного на ядре Linux, и система управления пакетами. Стандартный дистрибутив Linux состоит из ядра Linux, системы GNU, утилит GNU, библиотек, компилятора, дополнительного программного обеспечения, документации, оконной системы, оконного менеджера и среды рабочего стола. Таким образом, дистрибутивы Linux фактически делают ядро Linux полностью пригодным для использования в качестве операционной системы, добавляя к нему различные приложения. Существуют различные разновидности дистрибутивов Linux, которые обслуживают широкий спектр потребностей пользователей. Например, у нас есть ОС на базе OpenWrt Linux для встраиваемых устройств, Linux Mint для персональных компьютеров и Rocks Cluster Distribution для суперкомпьютеров. Всего существует около 600 дистрибутивов Linux. Или, например, популярная мобильная ОС Android от Google основана на Linux. Каждая итерация ОС Android построена на текущем ядре Linux. Стандарты и соответствие В общем, Linux не соответствует ни единой спецификации Unix (SUS), ни POSIX. Он пытается удовлетворить оба стандарта, не будучи зависим от них. Таие ОС называются Unix-подобными ОС (Unix-like, UN*X или *nix). Linux - это Unix-подобная операционная система с некоторыми изменениями в дизайне Unix. Было одно или два (буквально одно или два) исключения, такие как Inspur K-UX, китайский Linux, совместимый с POSIX. POSIX (Portable Operating System Interface — переносимый интерфейс операционных систем) — набор стандартов, описывающих интерфейсы между операционной системой и прикладной программой (системный API) Single UNIX Specification (SUS) — общее название для семейства стандартов, которым должна удовлетворять операционная система, чтобы называться «UNIX» Настоящий Unix, как и коммерческие предложения, соответствует требованиям. Некоторые производные BSD, включая все версии macOS, кроме одной, совместимы с POSIX. Имена вариантов, такие как AIX, HP-UX и Solaris, являются товарными знаками соответствующих организаций. MacOS - это сертифицированная ОС Unix. У него есть собственное ядро под названием XNU. MacOS используется в компьютерах Apple. Товарные знаки и авторское право Linux - зарегистрированная торговая марка Линуса Торвальдса. Linux Foundation управляет торговой маркой от его имени. Ядро Linux и основные утилиты выпускаются под различными общедоступными лицензиями GNU с «авторским левом». Исходный код находится в свободном доступе. Unix - зарегистрированная торговая марка Open Group. Он защищен авторским правом, проприетарен и имеет закрытый код. FreeBSD защищена авторским правом FreeBSD Project, и исходный код доступен. Различия в использовании С точки зрения пользовательского опыта, в командной строке нет большой видимой разницы. Из-за стандартов и соответствия POSIX программное обеспечение, написанное на Unix, может быть скомпилировано для операционной системы Linux с ограниченными усилиями по переносу. Например, скрипты оболочки можно использовать непосредственно в Linux во многих случаях с небольшими изменениями или даже без них. Некоторые утилиты командной строки имеют несколько разные параметры командной строки, но, по сути, на обеих платформах доступен один и тот же арсенал инструментов. Фактически, в IBM AIX есть AIX Toolbox для приложений Linux. Это позволяет системному администратору устанавливать сотни пакетов GNU (например, Bash, GCC и другие). Различные разновидности Unix имеют разные доступные графические интерфейсы пользователя (GUI), как и Linux. Пользователь Linux, знакомый с GNOME или Mate, сможет нащупать свой путь при первом знакомстве с KDE или Xfce. То же самое и с рядом графических интерфейсов пользователя, доступных в Unix, таких как Motif, Common Desktop Environment и X Windows System. Все они достаточно похожи, чтобы по ним мог ориентироваться любой, кто знаком с концепциями оконной среды с диалогами, меню и значками. Вы узнаете больше о различиях при администрировании систем. Например, есть разные механизмы инициализации. Производные от System V Unix и потоков BSD имеют разные системы инициализации. Бесплатные варианты BSD поддерживали схемы инициализации BSD. По умолчанию дистрибутивы Linux будут использовать систему инициализации, производную от Unix System V или systemd. Подробнее про различия Использование и операции Linux используется от малых до средних операций, в то время как ранее UNIX был единственным вариантом. Большинство поставщиков программного обеспечения перешли на Linux, поскольку это открытое программное обеспечение, которое свободно распространяется и предпочтительно для веб-служб и офисных операций. В большинстве случаев используется Linux, но бывают случаи, когда UNIX имеет преимущество. Как и на предприятиях, которые используют массивные симметричные многопроцессорные системы, UNIX - правильный выбор. Серьёзным конкурентом Linux какое-то была FreeBSD, но благодоря открытости Linux стал лидером мира свободного ПО. Основные характеристики Linux - это ядро, а Unix - это стандартизация. Есть ряд функций, которыми отличаются обе операционные системы, некоторые из них приведены ниже. Возможности UNIX: Это многопользовательская и многозадачная ОС. На серверах и рабочих станциях UNIX используется в качестве главной управляющей программы. Возможности Linux: Это многозадачная ОС, которая также поддерживает многопользовательские программы. Одна программа может иметь более одного процесса, и каждый из процессов может иметь более одного потока. На одном компьютере вы можете установить Linux, а также другую ОС, и обе ОС будут работать без сбоев. У него есть авторизованная учетная запись, поэтому отдельные учетные записи защищены. Безопасность Не существует полностью защищенной ОС, но если мы сравним Unix и Linux, мы увидим, что Linux гораздо более оперативно реагирует на ошибки и угрозы. Оба имеют одинаковые характеристики, такие как правильная сегментация домена в многопользовательской среде, есть система паролей, с помощью которой система шифруется и так далее. Преимущество открытой программной системы в том, что она находится в свободном доступе, что делает ее более защищенной от ошибок. Когда кто-либо из разработчиков видит ошибку в программном обеспечении, он может сообщить об этом кому угодно на форуме разработчиков. В случае Unix система не является открытым программным обеспечением, поэтому она имеет ограничения и гораздо более уязвима для угроз. Аппаратная архитектура Если мы увидим коммерческие версии Unix, то большинство из них поддерживает свои собственные аппаратные машины. Например. HP-UX поддерживает только компьютеры PA-RISC и Itanium, Solaris работает на SPARC и x86, который является процессором питания. Они подпадают под ограничения UNIX, и по этой причине производители Unix имеют преимущество в том, что они могут оптимизировать код и драйверы. В случае с Linux это не так. Linux был написан таким образом, чтобы он мог поддерживать максимальное количество машин. Есть несколько платформ и машин, на которых может работать Linux с поддержкой нескольких других устройств ввода-вывода. Здесь разработчики не знают, в какой системе будет установлено программное обеспечение, поэтому они не могут оптимизировать код. Ядро Процесс установки исправлений и компиляции различен для Linux и Unix. В Linux патч может быть выпущен на форуме, и конечный пользователь может установить его на свой компьютер. Этот патч также может редактироваться и изменяться конечным пользователем. Поскольку существует множество сред, поддерживающих приложения Linux, разработчики зависят от многих глаз, чтобы знать об ошибках и угрозах. Ядра выпускаются только в двоичной форме коммерческими поставщиками Unix. Если необходимо установить обновление, администратор должен дождаться, пока поставщик выпустит исправление в двоичной форме. Поддержка файловой системы Существует множество файловых систем, поддерживаемых Linux, тогда как в случае Unix он поддерживает меньшее количество систем. Ниже мы увидим некоторые файловые системы, поддерживаемые разными ОС. Linux - Jfs, Xfs, Btrfs, Ext2, Ext3, Ext4, FAT, FAT32, NTFS, devpts и так далее. Unix - ufs, xfs, zfs, jfs, hfs +, hfs и так далее. Доступность приложений Как упоминалось выше, Linux - это клон Unix. Таким образом, многие приложения одинаковы в обеих ОС. Некоторые похожие команды - cp, ls, vi и cc. Linux - это версия GNU, тогда как Unix основан на оригинальных инструментах. Но это не следует путать, поскольку некоторые поставщики Unix используют инструменты GNU в своих установках. Большинство поставщиков предоставляют эти инструменты в виде предварительно скомпилированных пакетов, которые устанавливаются или поставляются как дополнительный компонент. Все дистрибутивы Linux поставляются с набором приложений с открытым исходным кодом, и есть несколько других, свободно доступных для разработчиков и конечных пользователей. Таким образом, Unix также портировал эти приложения, и они доступны в коммерческой версии Unix. Поддержка Все версии Unix являются платными, а версии для Linux можно использовать бесплатно. Это также добавляет в Unix функцию, заключающуюся в том, что если кто-то купит Unix, он получит коммерческую поддержку. В случае с Linux у нас есть несколько открытых форумов, где пользователи могут задавать вопросы и предлагать лучшее решение. Linux более отзывчив, поскольку несколько конечных пользователей заявили, что форумы более отзывчивы, чем коммерческая техническая поддержка Unix. Сравнительная таблица Особенности Linux Unix Разработчик Вдохновленный MINIX (Unix-подобная ОС), Linux был первоначально разработан финско-американским инженером-программистом Линусом Торвальдсом. Поскольку это открытый исходный код, у нас есть разработчики сообщества для Linux. Первоначально полученный от AT&T Unix, он был разработан в Bell Labs Кеннетом Лэйном Томпсоном, Деннисом Ричи и тремя другими. Написано на C и другие языки программирования. C и язык ассемблера. Семейство ОС Unix-подобный (Unix-like) Unix Исходная модель Открытый исходный код Смешанный. Однако, традиционно с закрытым исходным кодом, немногие проекты Unix имеют открытый исходный код, включая ОС Illumos и ОС BSD (Berkley Software Distribution). Доступно на языках Многоязычный Английский Первый выпуск Linux новее по сравнению с Unix. Он был производным от Unix и был выпущен в сентябре 1991 года. Unix старше. Был выпущен в октябре 1973 года для сторонних организаций. До этого он использовался внутри Bell Labs с момента основания в 1970 году. Тип ядра Монолитное ядро Тип ядра варьируется. Он может быть монолитным, микроядерным и гибридным. Лицензия GNUv2 (Стандартная общественная лицензия GPL) и другие. Лицензирование различается. Некоторые версии являются проприетарными, другие - бесплатными / OSS. Официальный веб-сайт https://www.kernel.org/ http://opengroup.org/unix Пользовательский интерфейс по умолчанию Оболочка Unix CLI (интерфейс командной строки) и графический (система X Windows) Текстовый режим интерфейса По умолчанию оболочка - BASH (Bourne Again Shell). Более того, он совместим со многими интерпретаторами команд. Первоначально оболочка Bourne. Он также совместим со многими интерпретаторами команд. Стоимость Можно получить и использовать бесплатно. Существуют также платные версии Linux. Но, как правило, Linux дешевле Windows. Проприетарные операционные системы имеют разные структуры затрат, устанавливаемые продавцами, соответственно. Примеры Debian, Ubuntu, Fedora, Red Hat, Android и т. Д. IBM AIX, Solaris, HP-UX, Darwin, macOS X и т. Д. Архитектура Первоначально был создан для оборудования Intel x86, порты доступны для многих типов процессоров. Совместим с машинами PA и Itanium. Solaris также доступен на x86/x64. OSX - это PowerPC. Обнаружение и устранение угроз Поскольку Linux в основном управляется сообществом открытого исходного кода, над кодом работают многие разработчики в разных частях мира. Следовательно, в случае Linux обнаружение и устранение угроз происходит довольно быстро. Из-за проприетарной природы Unix пользователям необходимо дождаться соответствующих исправлений для исправления ошибок. Безопасность Как Linux, так и ОС на базе Unix обычно считаются очень хорошо защищенными от вредоносных программ. Это связано с отсутствием корневого доступа, быстрыми обновлениями и сравнительно низкой долей рынка (по сравнению с Windows). По состоянию на 2018 год широко распространенного Linux-вируса не было. Unix также считается очень безопасным. Заразить еще сложнее, так как источник тоже недоступен. В настоящее время для Unix нет активно распространяющегося вируса. Цена Linux бесплатный. Однако корпоративная поддержка доступна по цене. Unix не бесплатен. Однако некоторые версии Unix бесплатны для использования в целях разработки (Solaris). В среде для совместной работы Unix стоит 1407 долларов на пользователя, а Linux стоит 256 долларов на пользователя. Следовательно, UNIX очень дорогая. Заключение Unix очень стар и считается родителем всех операционных систем. Ядро Linux также является производным от Unix. Основное различие между операционными системами на основе Unix и Linux заключается не в части представления, а в том, как они работают внутри, то есть в основном в части ядра. Разница между ними также будет зависеть от того, какие именно версии Linux и Unix вы сравниваете. Также важно указать, что Linux (и многие другие Unix-подобные ОС) можно свободно получать и изменять, в то время как операционные системы Unix - нет. Стоимость всегда является основным вопросом при принятии решения, какую технологию использовать, и Linux имеет в этом отношении преимущество. Linux более гибкий и бесплатный по сравнению с настоящими системами Unix, и именно поэтому Linux стал более популярным. При обсуждении команд в Unix и Linux они не одинаковы, но очень похожи. Фактически, команды в каждом дистрибутиве одного и того же семейства ОС также различаются. В Solaris, HP, Intel и других используются Интернет-серверы Unix, рабочие станции и персональные компьютеры. В то время как Linux широко используется для компьютерного программного обеспечения и оборудования, игр, планшетов, мэйнфреймов и т.д. Есть исследования, которые говорят, что Linux за последние несколько лет развивается быстрее, чем любая другая ОС. Следовательно, в будущем Linux может оставить далеко позади установки UNIX.
img
Виртуальный телефонный номер - один из ключевых сервисов современной IP-телефонии. Если говорить простым языком, это обычный телефонный номер с большим числом дополнительных преимуществ. Об особенностях виртуального номера и сферах его применения сегодня и пойдет разговор в нашей статье. Виртуальный номер подключается как отдельный сервис или вместе с виртуальной АТС. Сразу хотим отметить, что во втором случае число возможностей виртуального номера в разы увеличивается. Теперь об этих особенностях - более подробно. Особенности виртуальных номеров У номера много линий. Если у компании подключен обычный телефонный номер, то одновременно он может принять только один вызов. В случае с виртуальным номером число входящих звонков не ограничено. Как результат, в компанию легко дозвониться с первого раза, никто из клиентов не слышит сигнал "занято". Номер не привязан к адресу компании. Виртуальный номер никак не связан с адресом компании и местоположением абонента. Даже если фирма работает в Москве или Санкт-Петербурге, можно подключить виртуальный номер любого региона России. Клиент, который звонит на региональный номер никогда не узнает, что позвонил в столицу. Подключение номера за 15 минут. Чтобы подключить корпоративный номер, не надо прокладывать телефонные провода, покупать специальное оборудование и вызывать мастера. Для связи с помощью виртуальных номеров необходимы интернет и устройство для звонков (аналоговый, мобильный или специальный IP-телефон, ПК или ноутбук). Это 3 ключевых особенности виртуального номера. На самом деле, у виртуального номера еще больше преимуществ. Предлагаем их рассмотреть уже на реальных примерах из жизни российских компаний. Примеры использования виртуальных номеров Виртуальные номера решают большое число бизнес-задач, начиная от быстрой телефонизации бизнеса, заканчивая анализом рынка и эффективности рекламных кампаний. Сокращение расходов на связь "Компании используют виртуальные номера, чтобы оптимизировать бюджет на связь. Телефонные номера всех офисов подключаются к одной виртуальной АТС и, таким образом, создается единая корпоративная сеть. Звонить внутри компании можно абсолютно бесплатно. Чтобы связаться с коллегой из другого города и даже страны, достаточно набрать добавочный номер", - комментирует Иван Павлов, руководитель проектов Телфин, российского провайдера IP-телефонии. Выход на новые рынки сбыта Если компания планирует выйти на новый рынок, например, открыть представительство в Москве, можно подключить телефонный номер в коде 495 или 499, создать виртуальный офис и заранее оценить спрос на предоставляемые товары или услуги в столице. Таким образом, телефон не только помогает проанализировать возможность и целесообразность выхода на новый рынок, но и удаленно найти клиентов, сформировать базу постоянных лояльных покупателей. Организация удаленных рабочих мест "Корпоративный виртуальный номер может быть единым номером для всех сотрудников компании, даже если они работают вне офиса. Как пример, менеджер из Новосибирска может принять звонок клиента из Москвы или Екатеринбурга. В данном случае, вызов может прийти как на мобильный, так и домашний номер сотрудника. Сценарий переадресации и умная маршрутизация настраивается индивидуально в каждом конкретном случае", - добавил Иван Павлов. Компании выбирают виртуальные номера в зависимости от целей. Благо, что сегодня на рынке представлен большой выбор виртуальных номеров: российские, иностранные, мобильные, федеральные. Отличаются они по стоимости подключения и ежемесячной абонентской плате. Функциональные возможности виртуального номера меняются в зависимости от АТС, в паре с которой они работают.
img
В этой статье мы расскажем как интегрировать Python c Excel и Word, чтобы без проблем создавать автоматические отчеты. Microsoft Excel и Microsoft Word – это, без доли сомнений, две наиболее широко используемые программы как в мире бизнеса, так и в некорпоративной сфере. Они практически являются синонимами слову «работа». Как правило, не проходит и недели, чтобы мы тем или иным способом не воспользовались их преимуществами. И хотя для обычных повседневных задач автоматизация не требуется, бывают случаи, когда она может стать необходимостью. А именно, когда у вас есть множество диаграмм, рисунков, таблиц и отчетов, которые необходимо сделать, это может стать очень утомительным занятием, если все это выполнять вручную. А это не должно быть так. На самом деле существует способ создать конвейер в Python, где можно будет легко интегрировать эти программы для создания электронных таблиц в Excel, а затем передавать результаты в Word для создания отчета практически мгновенно. Openpyxl Познакомьтесь с Openpyxl, возможно, одной из самых универсальных привязок в Python, которая превращает взаимодействие с Excel буквально в прогулку по парку. Используя этот пакет, вы сможете читать и записывать все новые и старые форматы Excel, то есть .xlsx и .xls. Openpyxl позволяет заполнять строки и столбцы, выполнять формулы, создавать 2D- и 3D-диаграммы, маркировать оси и заголовки, а также имеет множество других возможностей, которые могут пригодиться. Однако здесь наиболее важно то, что этот пакет позволяет вам перебирать бесконечное количество строк и столбцов Excel, тем самым избавляя вас от всех этих утомительных вычислений и построения графиков, которые вам приходилось делать ранее самим. Python-docx А затем появляется Python-docx – пакет для Word – то же, что Openpyxl для Excel. Если вы все еще не изучили их документацию, то вам все же стоит на нее взглянуть. Python-docx – без преувеличения один из самых простых и понятных наборов инструментов, с которыми я работал с тех пор, как начал работать с Python. Он позволяет автоматизировать создание документов, автоматически вставляя текст, заполняя таблицы и отображая изображения в отчете без каких-либо усилий. Без лишних церемоний давайте создадим наш собственный автоматизированный конвейер. Запустите IDE по вашему выбору и установите следующие пакеты: pip install openpyxlpip install python-docx Автоматизация Microsoft Excel Для начала загрузим уже созданную книгу Excel (как показано ниже): workbook = xl.load_workbook('Book1.xlsx') sheet_1 = workbook['Sheet1'] Затем мы пройдемся по всем строкам в нашей электронной таблице для того, чтобы вычислить и вставить значение мощности, которую мы получим, умножив ток на напряжение: for row in range(2, sheet_1.max_row + 1): current = sheet_1.cell(row, 2) voltage = sheet_1.cell(row, 3) power = float(current.value) * float(voltage.value) power_cell = sheet_1.cell(row, 1) power_cell.value = power Как только мы сделаем это, то мы сможем использовать рассчитанные значения мощности для построения линейной диаграммы, которая будет вставлена в указанную ячейку, как показано ниже: values = Reference(sheet_1, min_row = 2, max_row = sheet_1.max_row, min_col = 1, max_col = 1) chart = LineChart() chart.y_axis.title = 'Power' chart.x_axis.title = 'Index' chart.add_data(values) sheet_1.add_chart(chart, 'e2') workbook.save('Book1.xlsx') Извлечение диаграммы Теперь, когда мы построили нашу диаграмму, нам нужно ее извлечь в формате изображения для того, чтобы мы могли использовать ее в нашем отчете Word. Для начала объявим точное местоположения нашего файла Excel, а также место, куда мы хотим сохранить изображение получившейся диаграммы: input_file = "C:/Users/.../Book1.xlsx" output_image = "C:/Users/.../chart.png" Затем необходимо получить доступ к таблице, используя следующий метод: operation = win32com.client.Dispatch("Excel.Application") operation.Visible = 0 operation.DisplayAlerts = 0 workbook_2 = operation.Workbooks.Open(input_file) sheet_2 = operation.Sheets(1) И далее вы можете перебрать все диаграммы в таблице (если их больше одной) и сохранить их в указанном месте: for x, chart in enumerate(sheet_2.Shapes): chart.Copy() image = ImageGrab.grabclipboard() image.save(output_image, 'png') passworkbook_2.Close(True) operation.Quit() Автоматизация Microsoft Word Теперь, когда у нас есть изображение диаграммы, мы должны создать шаблон документа, который представляет собой обычный документ Microsoft Word (.docx), сформированный именно так, как нам необходимо, чтобы наш отчет имел определенный тип и размер шрифта, нужное форматирование и структуру страницы. Далее, все, что нам необходимо сделать, это создать заполнители для нашего автоматизированного содержимого, то есть значений таблиц и изображений, и объявить их с переменными, как показано ниже. Внутри двойных фигурных скобок {{variable_name}} может быть объявлен любое автоматизированное содержимое, включая текст и изображения. Для таблиц вам необходимо создать таблицу с шаблонной строкой, в которую включены все столбцы, а затем вам необходимо добавить еще одну строку выше и одну строку ниже со следующими обозначениями: Первая строка: {%tr for item in variable_name %} Последняя строка: {%tr endfor %} На рисунке выше указаны следующие имена переменных: table_contents для словаря Python, в котором будут храниться наши табличные данные. Index для ключей словаря (первый столбец). Power, Current и Voltage для значений словаря (второй, третий и четвертый столбцы). Затем мы импортируем наш документ-шаблон в Python и создаем словарь, в котором будут храниться значения нашей таблицы: template = DocxTemplate('template.docx') table_contents = []for i in range(2, sheet_1.max_row + 1): table_contents.append({ 'Index': i-1, 'Power': sheet_1.cell(i, 1).value, 'Current': sheet_1.cell(i, 2).value, 'Voltage': sheet_1.cell(i, 3).value }) Далее мы импортируем изображение диаграммы, которое ранее мы создали в Excel, и создаем еще один словарь для создания экземпляров всех переменных-заполнителей, объявленных в документе-шаблоне: image = InlineImage(template,'chart.png',Cm(10))context = { 'title': 'Automated Report', 'day': datetime.datetime.now().strftime('%d'), 'month': datetime.datetime.now().strftime('%b'), 'year': datetime.datetime.now().strftime('%Y'), 'table_contents': table_contents, 'image': image } И, наконец, мы отображаем отчет с нашей таблицей значений и изображением диаграммы: template.render(context) template.save('Automated_report.docx') Заключение И вот, мы получили автоматически созданный отчет Microsoft Word с числами и диаграммами, созданными в Microsoft Excel. При этом у вас есть полностью автоматизированный конвейер, который можно использовать для создания любого количества таблиц, диаграмм и документов. Исходный код программы import openpyxl as xl from openpyxl.chart import LineChart, Reference import win32com.client import PIL from PIL import ImageGrab, Image import os import sys from docx.shared import Cm from docxtpl import DocxTemplate, InlineImage from docx.shared import Cm, Inches, Mm, Emu import random import datetime import matplotlib.pyplot as plt ######## Generate automated excel workbook ######## workbook = xl.load_workbook('Book1.xlsx') sheet_1 = workbook['Sheet1'] for row in range(2, sheet_1.max_row + 1): current = sheet_1.cell(row, 2) voltage = sheet_1.cell(row, 3) power = float(current.value) * float(voltage.value) power_cell = sheet_1.cell(row, 1) power_cell.value = power values = Reference(sheet_1, min_row = 2, max_row = sheet_1.max_row, min_col = 1, max_col = 1) chart = LineChart() chart.y_axis.title = 'Power' chart.x_axis.title = 'Index' chart.add_data(values) sheet_1.add_chart(chart, 'e2') workbook.save('Book1.xlsx') ######## Extract chart image from Excel workbook ######## input_file = "C:/Users/.../Book1.xlsx" output_image = "C:/Users/.../chart.png" operation = win32com.client.Dispatch("Excel.Application") operation.Visible = 0 operation.DisplayAlerts = 0 workbook_2 = operation.Workbooks.Open(input_file) sheet_2 = operation.Sheets(1) for x, chart in enumerate(sheet_2.Shapes): chart.Copy() image = ImageGrab.grabclipboard() image.save(output_image, 'png') pass workbook_2.Close(True) operation.Quit() ######## Generating automated word document ######## template = DocxTemplate('template.docx') #Generate list of random values table_contents = [] for i in range(2, sheet_1.max_row + 1): table_contents.append({ 'Index': i-1, 'Power': sheet_1.cell(i, 1).value, 'Current': sheet_1.cell(i, 2).value, 'Voltage': sheet_1.cell(i, 3).value }) #Import saved figure image = InlineImage(template,'chart.png',Cm(10)) #Declare template variables context = { 'title': 'Automated Report', 'day': datetime.datetime.now().strftime('%d'), 'month': datetime.datetime.now().strftime('%b'), 'year': datetime.datetime.now().strftime('%Y'), 'table_contents': table_contents, 'image': image } #Render automated report template.render(context) template.save('Automated_report.docx')
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59