1 | ||
Editor: pycz
Time: 2006/10/29 16:51:35 GMT+0 |
||
Note: |
changed: - 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":http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_wrcore/html/wrtskhowtocreatenewdocuments.asp nebo v "Googlu":http://www.google.com/search?hl=cs&q=%22microsoft+word+object+model%22&btnG=Vyhledat+Googlem&lr= . 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
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):
vám vznikne několik nových adresářů v adresáři site-packages:
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).
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í :-)
>>> 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