Установка Visual Studio Code
При использовании VS Code в качестве текстового редактора или интегрированной среды разработки (IDE) вам доступны IntelliSense (помощь в завершении кода), анализ кода (помогает избежать ошибок в коде), поддержка отладки (помогает находить ошибки в коде после запуска), фрагменты кода (шаблоны для небольших повторно используемых блоков кода) и модульное тестирование (тестирование интерфейса кода с различными типами входных данных).
VS Code также содержит встроенный терминал, который позволяет открывать командную строку Python с помощью командной строки Windows, PowerShell или любой другой, создавая простой рабочий процесс между редактором кода и командной строкой.
-
Чтобы установить VS Code, скачайте VS Code для Windows: https://code.visualstudio.com.
-
Установив VS Code, необходимо также установить расширение Python. Для установки расширения Python можно выбрать ссылку на VS Code в Marketplace или открыть VS Code и выполнить поиск по фразе Python в меню расширений (Ctrl+Shift+X).
-
Python — интерпретируемый язык, и для выполнения кода Python необходимо указать VS Code, какой интерпретатор нужно использовать. Мы рекомендуем использовать самую последнюю версию Python, если у вас нет особой причины для обратного. После установки расширения Python выберите интерпретатор Python 3, открыв палитру команд (CTRL+SHIFT+P), и начните вводить команду Python: Select Interpreter (Python: выбор интерпретатора) для поиска, а затем выберите появившуюся команду. Вы также можете использовать параметр Select Python Environment (Выбрать среду Python) в нижней строке состояния, если она доступна (возможно, уже отображается выбранный интерпретатор). Команда предоставляет список доступных интерпретаторов, которые VS Code может найти автоматически, включая виртуальные среды. Если нужный интерпретатор не отображается, перейдите к статье о настройке сред Python.
-
чтобы открыть терминал в VS Code, выберите просмотретьтерминалили используйте сочетание клавиш Ctrl + ‘ (с помощью символа обратной кавычки). Терминалом по умолчанию является PowerShell.
-
В окне терминала VS Code откройте Python, просто введя команду:
-
Попробуйте использовать интерпретатор Python, введя: . Python вернет фразу «Hello World».
Обратите внимание
Использование win32com.client позволяет более плавно обрабатывать различные сложные ситуации Excel или Word. По сравнению с openpyxl, xlrd, xlwd это будет более полным. Тем не менее, есть некоторые моменты, которые следует отметить во время использования:
Как упоминалось ранее, вам нужно заключить в скобки функцию
Хотя python не заботится о капитализации, вы должны обратить внимание на использование заглавных букв при использовании win32com.client. Многие функции не могут быть вызваны, если они не чувствительны к регистру
Например, функция Open для открытия таблицы excel должна иметь заглавные буквы «O» и wb. .Save (), ‘S’ также должны быть в верхнем регистре, и мы используем строчные для openpyxl.
Openpyxl использует save () при сохранении. Многие исходные диаграммы формата не могут быть сохранены. Например, для изменения Excel исходная сводная таблица внутри не может быть сохранена с помощью openpyxl save (), но используется win32com.client Wb.Save () может сохранить эти диаграммы, что является более удобным местом.
Что касается вызовов функциональных модулей VBA, то их можно получить напрямую путем записи макросов без необходимости поиска документов, что также является более удобным и гибким местом.
Внешние события
Обратите внимание, что несмотря на то, что «Win32_NTLogEvent» заканчивается на «Event», на самом деле это — не внешнее событие. Вы можете определить, какие классы являются внешними событиями, исследуя их происхождение:
import wmi c = wmi.WMI() print c.Win32_PowerManagementEvent.derivation()
Или вы можете идти от вершины вниз и разыскивать подклассы __ExtrinsicEvent:
import wmi c = wmi.WMI() for i in c.subclasses_of("__ExtrinsicEvent"): print i
Внешние события используются аналогичным способом, как внутренние. Различие состоит в том, что любой тип события и задержка игнорируются, т.к. WMI не опрашивает от вашего имени, а ожидает на основной подсистеме. Метод watch_for возвращает все ещё объект события wmi (v1.3.1), но уже без event_info, который не поддерживается WMI. Предположим, вы хотите делать что-то всякий раз, когда ваш компьютер выходит из режима standby, например, уведомить группу IM о вашем присутствии:
# -*- coding: cp1251 -*- import wmi import datetime c = wmi.WMI() watcher = c.Win32_PowerManagementEvent.watch_for(EventType=7) while True: event = watcher() print "resumed" # Число 100-наносекундных интервалов с 1-ого января 1601! # TIME_CREATED, возможно, не поддерживается в Win2K # прим. перев.: время будет выведено без учёта поясов и летнего времени (т.е. "чистое" GMT). if hasattr(event, "TIME_CREATED"): ns100 = int(event.TIME_CREATED) offset = datetime.timedelta(microseconds=ns100 / 10) base = datetime.datetime(1601, 1, 1) print "Resumed at", base + offset
Для внутреннего события модификации вы можете произвести сравнение значений «до» и «после» объекта «триггера»:
import wmi c = wmi.WMI() watcher = c.Win32_Process.watch_for("modification") event = watcher() print "Modification occurred at", event.timestamp print event.path() prev = event.previous curr = event for p in prev.properties: pprev = getattr(prev, p) pcurr = getattr(curr, p) if pprev != pcurr: print p print " Previous:", pprev print " Current:", pcurr
Open a File in Excel
In my day-to-day work, I frequently use pandas to analyze and manipulate data,
then output the results in Excel. The next step in the process is to open up the
Excel and review the results. In this example, we can automate the file opening
process which can make it simpler than trying to navigate to the right directory
and open a file.
Here’s the full example:
import win32com.client as win32 import pandas as pd from pathlib import Path # Read in the remote data file df = pd.read_csv("https://github.com/chris1610/pbpython/blob/master/data/sample-sales-tax.csv?raw=True") # Define the full path for the output file out_file = Path.cwd() "tax_summary.xlsx" # Do some summary calcs # In the real world, this would likely be much more involved df_summary = df.groupby('category')['ext price', 'Tax amount'.sum() # Save the file as Excel df_summary.to_excel(out_file) # Open up Excel and make it visible excel = win32.gencache.EnsureDispatch('Excel.Application') excel.Visible = True # Open up the file excel.Workbooks.Open(out_file) # Wait before closing it _ = input("Press enter to close Excel") excel.Application.Quit()
Here’s the resulting Excel output:
Copying Data into Excel
The final example is the most involved but illustrates a powerful approach for blending
the data analysis of python with the user interface of Excel.
It is possible to build complex excel with pandas but that approach can be very
laborious. An alternative approach would be to build up the complex
file in Excel, then do the data manipulation and copy the data tab to the final
Excel output.
Here is an example of the Excel dashboard we want to create:
Yes, I know that pie charts are awful but I can almost guarantee that someone is
going to ask you to put one in the dashboard at some point in time! Also, this template
had a pie chart and I decided to keep it in the final output instead of trying to figure
out another chart.
It might be helpful to take a step back and look at the basic process the code will follow:
Let’s get started with the code.
import win32com.client as win32 import pandas as pd from pathlib import Path # Read in the remote data file df = pd.read_csv("https://github.com/chris1610/pbpython/blob/master/data/sample-sales-tax.csv?raw=True") # Define the full path for the data file file data_file = Path.cwd() "sales_summary.xlsx" # Define the full path for the final output file save_file = Path.cwd() "sales_dashboard.xlsx" # Define the template file template_file = Path.cwd() "sample_dashboard_template.xlsx"
In the section we performed our imports, read in the data and defined all
three files. Of note is that this process includes the step of summarizing the data
with pandas and saving the data in an Excel file. We then re-open that file
and copy the data into the template. It is a bit convoluted but this is the best
approach I could figure out for this scenario.
Next we perform the analysis and save the temp Excel file:
# Do some summary calcs # In the real world, this would likely be much more involved df_summary = df.groupby('category')['quantity', 'ext price', 'Tax amount'.sum() # Save the file as Excel df_summary.to_excel(data_file, sheet_name="Data")
Now we use COM to merge the temp output file into our Excel dashboard tab and save
a new copy:
# Use com to copy the files around excel = win32.gencache.EnsureDispatch('Excel.Application') excel.Visible = False excel.DisplayAlerts = False # Template file wb_template = excel.Workbooks.Open(template_file) # Open up the data file wb_data = excel.Workbooks.Open(data_file) # Copy from the data file (select all data in A:D columns) wb_data.Worksheets("Data").Range("A:D").Select() # Paste into the template file excel.Selection.Copy(Destination=wb_template.Worksheets("Data").Range("A1")) # Must convert the path file object to a string for the save to work wb_template.SaveAs(str(save_file))
The code opens up Excel and makes sure it is not visible. Then it opens up the
dashboard template and data files. It uses the
to
select all the data and then copies it into the template file.
The final step is to save the template as a new file.
Используя ctypes.
является частью стандартной библиотеки Python и, отчасти, она помогает нам использовать DLL.
В качестве краткого примера я покажу вам, как использовать Метод, который существует в который живет в Отказ
Первый шаг – загрузить DLL. Это довольно просто.
import ctypes User32 = ctypes.WinDLL('User32.dll')
Теперь мы можем начать назвать методы от этой DLL напрямую!
>>> User32.GetSystemMetrics(1) # Get the height of the primary monitor 1440
Довольно круто! Но вы можете спросить себя: как я узнал, чтобы получить доступ к способу под названием И как я узнал, чтобы пройти в Как аргумент, чтобы получить высоту монитора?
Как мне знать, какие методы и свойства существуют?
Это сложная проблема. В мире DLL, обычно вы, как ожидается, узнают о методах заранее. Это обычно означает, что говорят или читают Документы Отказ Для приведенного выше примера мы можем прочитать в документах, которые Microsoft предоставляет этому это метод, который принимает один параметр, целое число, представляющее индекс системной информации для получения:
int GetSystemMetrics( int nIndex );
Документы также указывают, как целочисленные параметры отображаются на метрике системы. В таблице мы видим Имеет индекс И описывается как «высота экрана первичного монитора дисплея, в пикселях». На основании этой информации мы собрали вместе, чем мы можем позвонить Чтобы получить высоту основного монитора.
Что делать, если у нас нет документов?
Иногда нам недостаточно повезло, чтобы знать заранее или иметь доступные нам ссылки. Они также не очень удобны, даже когда у вас их есть. Вы заметите, что, в отличие от многих обычных классов Python, Объект, который мы сделали ранее, не говорят нам, какие методы существуют в DLL. Вы можете попробовать позвонить Но это не даст вам никакой полезной информации.
Если вы пошли на рискнуть, как получить эту информацию без документов, вы, вероятно, будут сообщены использовать DLL Exporter или Com Browser. Введите Pywin32 Отказ
Внутренние события
Внутренние события происходят, когда вы подключаетесь к общему механизму событий, предлагаемому системой WMI, чтобы опросить другие классы от вашего имени. Вы можете проследить создание, модификацию или удаление любого WMI класса. Вы должны определить тип события (создание, удаление или модификация) и задать частоту опроса в целых секундах. После этих параметров вы можете привести именованные параметры, чтобы обычным способом уменьшить количество возвращённых событий
Обратите внимание, что, так как это опрашивает неявно, вы не можете использовать это для, например, контроля полной структуры каталога.
Чтобы наблюдать за системным логом ошибок, напишите:
# -*- coding: cp1251 -*- import wmi c = wmi.WMI(privileges=) watcher = c.Win32_NTLogEvent.watch_for("creation", 2, Type="error") while 1: error = watcher() print "Ошибка в логе %s: %s" % (error.Logfile, error.Message) # посылка письма администратору и т.п.
Один нюанс: опрос происходит с той частотой, с какой вы определили. Таким образом, возможно пропустить какие-то события.
v1.3.1: метод watch_for возвращает фактически специальный объект события wmi, который включает объект, который вызвал код и, для внутренних событий, тип события, отметку времени и предыдущее значение при модификации.
Python и Microsoft Excel
Если вы искали примеры использования Python и Office, вы обычно находите, что чаще всего взломанный компонент – Excel. На самом деле, существует несколько модулей без Pywin32, специально созданных для чтения и записи файлов Excel. Они называются XLRD и XLWT соответственно. Но это тема для другой статьи. Здесь мы увидим, как связываться с Excel, используя интерфейс Pywin32
Обратите внимание, что следующие сценарии работают только на Windows. Одним из преимуществ XLRD и XLWT в том, что вы можете использовать их на любой платформе
Давайте посмотрим на простой пример, пожалуйста?
import time import win32com.client as win32 #---------------------------------------------------------------------- def excel(): """""" xl = win32.gencache.EnsureDispatch('Excel.Application') ss = xl.Workbooks.Add() sh = ss.ActiveSheet xl.Visible = True time.sleep(1) sh.Cells(1,1).Value = 'Hacking Excel with Python Demo' time.sleep(1) for i in range(2,8): sh.Cells(i,1).Value = 'Line %i' % i time.sleep(1) ss.Close(False) xl.Application.Quit() if __name__ == "__main__": excel()
Пример выше похоже на то, что вы обычно нашли в Интернете. На самом деле он основан на примере, который я видел в отличной книге Уэсли Чуна, Core Python Программирование Отказ Давайте займем некоторое время и распакуйте код. Чтобы получить доступ к Excel, импортируем win32com.client а потом назовите его gencache.ensuredispatch , прохождение в названии приложения, которое мы хотим открыть. В этом случае строка для пропуска – «Excel.Application». Все, что делает открыто Excel на заднем плане. На данный момент пользователь даже не знает, что Excel открыт, если у них не работает диспетчер задач. Следующая строка – это добавляет новую рабочую книгу для Excel, позвонив на метод «Workbookss.adbookss.adddddddddd axtbooks axmentss.adddddd (). Это возвращает объект простыней (я думаю). Чтобы получить активист, мы называем Ss.activesheteet Отказ Наконец, мы заставляем сама программа Excel, установила, что свойство to true.
Чтобы установить определенную ценность ячейки, позвоните что-то подобное: SH.CELLS (ROW, COL)
Value Отказ Обратите внимание, что наш экземпляр не основан на нуле и фактически нанесет значение в правильной комбинации строки/COL. Если мы хотим извлечь значение, мы просто удаляем знак равенства
Что, если мы хотим формулу? Чтобы понять это наше, я записал макрос в Excel и сделал специальную команду вставки, которая только вставила формулу. Используя сгенерированный код, я выяснил, что получить формулу в Python, вы просто делаете это:
formula = sh.Cells(row, col).Formula
Что, если вам нужно изменить, какой лист вы находитесь? Запись макроса также показала мне, как выполнить этот подвиг. Вот код VBA от Excel:
Sub macro1 () ‘ Macro1 Macro. ‘ Листы («лист2»). Выберите Конец
Из этого кода я собрал, что мне нужно было позвонить в метод «Листы объекта листов» и после небольшого возобновления, я получил его на работу, выполнив следующее:
sheet2 = ss.Sheets("Sheet2")
Теперь у нас есть ручка на втором листе в рабочей книге. Если вы хотите редактировать или извлекать значения, просто нажмите те же методы, которые вы использовали выше, с тем, что вы называете экземпляром листе2 (I.E. Sheet2.Cells (1,1). Value). Последние две строки из исходной программы закроют простыни, а затем выходят весь экземпляр Excel.
Вы можете думать, что до тех пор, пока все, что я показал, как создать новый документ. Что, если вы хотите открыть существующий файл? Просто сделайте что-нибудь подобное в начале кода:
xl = win32.gencache.EnsureDispatch('Excel.Application') ss = xl.Workbooks.Open(filename)
И там у вас есть! Теперь вы знаете основы взлома Excel с Python, используя модель COM Excel. Если вам нужно узнать больше, я рекомендую попытаться записать макрос, а затем переводить результат в Python. Примечание. Я не смог найти пример, который мог бы сохранить электронную таблицу … Есть несколько примеров, которые утверждают, что они работают, но они не для меня.
Создание exe файла с помощью PyInstaller
PyInstaller собирает в один пакет Python-приложение и все необходимые ему библиотеки следующим образом:
- Считывает файл скрипта.
- Анализирует код для выявления всех зависимостей, необходимых для работы.
- spec, который содержит название скрипта, библиотеки-зависимости, любые файлы, включая те параметры, которые были переданы в команду PyInstaller.
- Собирает копии всех библиотек и файлов вместе с активным интерпретатором Python.
- Создает папку BUILD в папке со скриптом и записывает логи вместе с рабочими файлами в BUILD.
- Создает папку DIST в папке со скриптом, если она еще не существует.
- Записывает все необходимые файлы вместе со скриптом или в одну папку, или в один исполняемый файл.
Если использовать параметр команды или при генерации исполняемого файла, тогда все будет помещено в одну папку. Это поведение по умолчанию. Если же использовать параметр или , то все окажется в одном исполняемом файле.
Возьмем в качестве примера простейший c названием simple.py, который содержит такой код.
Копировать
Создадим один исполняемый файл. В командной строке введите:
После завершения установки будет две папки, BUILD и DIST, а также новый файл с расширением .spec. Spec-файл будет называться так же, как и файл скрипта.
Python создает каталог распространения, который содержит основной исполняемый файл, а также все динамические библиотеки.
Вот что произойдет после запуска файла.
WMI и потоки
WMI — это механизм, основанный на COM/DCOM, поэтому механизм потоков COM также используется и в WMI. Это не зависит от того, действительно ли ваша программа явно вызывает поток в Python: например, если вы выполняете код в службе, вы вероятно используете потоки, нравится вам это или нет. Пример с потоками на Python:
import pythoncom import wmi import threading import time class Info(threading.Thread): def __init__(self): threading.Thread.__init__(self) def run(self): print 'In Another Thread...' pythoncom.CoInitialize() try: c = wmi.WMI() for i in range(5): for process in c.Win32_Process(): print process.ProcessId, process.Name time.sleep(2) finally: pythoncom.CoUninitialize() if __name__ == '__main__': print 'In Main Thread' c = wmi.WMI() for process in c.Win32_Process(): print process.ProcessId, process.Name Info().start()
2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.
Загрузка
Вы можете скачать модуль со странички автора: http://tgolden.sc.sabren.com/python/wmi.html. Там же вы найдёте историю версий (в т.ч. самую свежую версию из репозитория) и документацию на английском языке, а также некоторые замечания относительно использования этого модуля в службах Windows и при многопоточном программировании в Python. Кроме того, вы можете скачать модуль и прямо здесь:
wmi-1.3.1.zip (26 699 байт)
Модуль wmi, инсталлятор, readme и документация на английском языке
Версия 1.3.1 от 5 июня 2007 г.
Внимание! Возможно, на сайте автора вы сможете найти более свежую версию.
pywin32
The pywin32 package has been around for a very long time. In fact, the book
that covers this topic was published in 2000 by Mark Hammond and Andy Robinson.
Despite being 18 years old (which make me feel really old :), the underlying
technology and concepts still work today. Pywin32 is basically a very thin wrapper of
python that allows us to interact with COM objects and automate Windows applications
with python. The power of this approach is that you can pretty much do anything
that a Microsoft Application can do through python. The downside is that you have
to run this on a Windows system with Microsoft Office installed. Before we go
through some examples, make sure you have pywin32 installed on your system using
or
5 ответов
Лучший ответ
Поскольку он не встроен в Python, вам необходимо установить его.
4
DeepSpace
21 Фев 2016 в 11:21
Поскольку win32com — это пакет для Windows, этот ответ будет ориентирован на пользователей Windows.
Вариант 1. Установите локально с помощью pipenv (рекомендуется)
Вы можете использовать менеджер пакетов, например pipenv, для управления вашими зависимостями.
- Убедитесь, что у вас установлен pipenv ().
- В каталоге вашего проекта запустите , чтобы установить пакет.
- Теперь вы можете запустить свой код, используя команды, подобные следующим
Пример кода:
Вариант 2. Установите локально с помощью venv (рекомендуется)
Если pipenv не ваша вещь, вы можете использовать встроенные виртуальные среды.
- Из каталога проекта запустите , чтобы настроить виртуальную среду.
- Запускайте из каталога вашего проекта всякий раз, когда вы захотите использовать эту виртуальную среду (вы увидите, что добавится в приглашение оболочки, чтобы узнать, что оно активировано).
- Запустите из вашей активной виртуальной среды, чтобы установить пакет.
- Вы можете запускать свой код как , пока активна виртуальная среда.
Вариант 3: Устанавливать глобально (обычно не рекомендуется)
Обычно это не рекомендуется, но в любом случае включено.
- Используя , вы можете установить пакет глобально.
- Затем вы можете запустить свой код с помощью .
Alexander O’Mara
24 Дек 2019 в 19:32
Вы должны попробовать использовать следующим образом:
Это , который должен работать.
U10-Forward
22 Дек 2019 в 10:56
При работе с проектами Python хорошей идеей всегда является создание так называемой виртуальной среды. Таким образом, ваши модули будут более организованными и уменьшат количество ошибок импорта.
Например, давайте предположим, что у вас есть скрипт script.py, который импортирует несколько модулей, включая pypiwin32.
1. в зависимости от вашей операционной системы вам нужно скачать и установить пакет virtualenv, в Debian это так же просто, как .
2. после установки пакета virtualenv перейдите в папку вашего проекта / скрипта и создайте папку virtualenv с , которая создаст папку с именем в этом каталоге.
3. активируйте ваш virtualenv , если вы уже находитесь в каталоге, где существует venv, просто выполните
4. после активации вашей установки venv вы проектируете зависимости или
5. запустите ваш скрипт, он не выдаст эту ошибку снова
Учебник по использованию Python с VS Code (на примере Hello World)
Команда VS Code составила отличный учебник по с пошаговым руководством по созданию программы Hello World с помощью Python, запуску программного файла, настройке и запуску отладчика, а также установке пакетов, таких как matplotlib и numpy, для создания графического изображения в виртуальной среде.
-
Откройте PowerShell и создайте пустую папку с именем hello, перейдите в эту папку и откройте ее в VS Code:
-
после VS Code откроется новая папка hello в окне обозревателя слева, откройте окно командной строки на нижней панели VS Code, нажав клавиши Ctrl + ‘ (с помощью символа обратной кавычки) или выбрав видтерминал. После запуска VS Code в папке эта папка станет вашей рабочей областью. VS Code хранит параметры, относящиеся к этой рабочей области, в файле .vscode/settings.json. Они отделены от параметров пользователя, которые хранятся глобально.
-
Продолжайте работу с учебником в документации для VS Code: .