PyWin32
win32all, pywin32, Python Win32 Extensions a/nebo Python for Windows Extensions - synonyma, pod kterými se na Netu ukrývá
Jedná se balík modulů pro práci pod Windows. Obsahuje modul pro práci s WinAPI (win32api), s registry (_winreg), s Microsoftí technologií COM (win32com) a další. K těmto modulům je také dodáváno vývojové prostředí PythonWin.
Obsahuje, kromě jiných, také tyto moduly (seznam všech se mi nikde na Netu nepodařilo najít, najdete ho až v souboru nápovědy pywin32.chm po instalaci):
- win32api
- win32files
- win32net
- win32print
- win32service
- isapi
- mapi
- pywintypes
- windows editor pythonwin.
Download, Tutoriály, praktické ukázky, kniha:
- https://sourceforge.net/projects/pywin32/
- http://www.reportlab.com/ftp/talks/PythonWindowsTutorial.doc
- http://aspn.activestate.com/ASPN/search?query=win32&x=0&y=0§ion=PYTHONCKBK&type=Subsection
- http://www.microsoft.com/technet/scriptcenter/scripts/python/pyindex.mspx
- http://www.oreilly.com/catalog/pythonwin32/
Po instalaci
vám vznikne několik nových adresářů v adresáři site-packages:
- win32com - pro práci s com objekty
- win32comext -
- pywin32_system32
- isapi
- win32 - moduly pro práci s win api (síťě, uživatelé, tisk, ...)
- pythonwin - pyeditor pro windows od M. Hammonda
- a jeden soubor nápovědy: pywin32.chm
Python COM
Asi by se slušelo připomenout, že při skriptování pomocí COM umí Python pouze objekty s rozhraním IDispatch a potom pár objektů, ke kterým je u PythonCOMu uděláno DLL rozhraní. Tím myslím přímé vytváření objektů přes CoCreateInstance a QueryInterface s daným rozhraním (obecně musí umět IDispatch).
Praktické ukázky
Příklad scriptování Wordu
vložení textu do dokumentu:
# -*- coding: cp1250 -*- import win32com.client # je snad lepší dávat přednost gencache.EnsureDispatch před Dispatch, # protože se tak zpřístupní všechny možné konstanty # zde konkrétně wdNewBlankDocument wordApp = win32com.client.gencache.EnsureDispatch("Word.Application") wordApp.Visible = 1 # jasné # Nový dokument wordApp.Documents.Add(DocumentType=win32com.client.constants.wdNewBlankDocument) # Vložíme text na pozici kurzoru wordApp.Selection.TypeText (Text=u"Tuto větu napsal Python.") #uložíme wordApp.ActiveDocument.SaveAs("Python") # zavřeme Word # wordApp.Application.Quit()
A jak jsem na všechny ty metody wordApp přišel? Pustil jsem si Word, nahrál jsem si makro, které dělalo to co bych chtěl, pak jsem to makro editoval a to co jsem tam našel, jsem s mírnými úpravami (přidělání závorek, změna := na =, apod.) dal do scriptu vždy za objekt wordApp.
Druhý možný způsob je hrabat se MSDN nebo v Googlu . Hodně štěstí :-)
Jaké mám připojené disky?
>>> import win32net >>> win32net.NetServerDiskEnum() Traceback (most recent call last): File "<stdin>", line 1, in ? TypeError: function takes at least 1 argument (0 given) >>> win32net.NetServerDiskEnum(None) (u'A:', u'C:', u'D:', u'E:')
nebo :
import win32api s = win32api.GetLogicalDriveStrings() print s lst = s.split('\0') print lst