Python for Windows
comtypes
nvdajp のための実験。
http://starship.python.net/crew/theller/comtypes/
c:\work>python Python 2.6.4 (r264:75708, Oct 26 2009, 08:23:19) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> from comtypes.client import CreateObject >>> ie = CreateObject("InternetExplorer.Application") # Generating comtypes.gen._EAB22AC0_30C1_11CF_A7EB_0000C05BAE0B_0_1_1 # Generating comtypes.gen._00020430_0000_0000_C000_000000000046_0_2_0 # Generating comtypes.gen.stdole # Generating comtypes.gen.SHDocVw >>> ie.Visible = True >>> dir(ie) ['AddRef', 'AddressBar', 'Application', 'Busy', 'ClientToWindow', 'Container', ' Document', 'ExecWB', 'FullName', 'FullScreen', 'GetIDsOfNames', 'GetProperty', ' GetTypeInfo', 'GetTypeInfoCount', 'GoBack', 'GoForward', 'GoHome', 'GoSearch', ' HWND', 'Height', 'Invoke', 'Left', 'LocationName', 'LocationURL', 'MenuBar', 'Na me', 'Navigate', 'Navigate2', 'Offline', 'Parent', 'Path', 'PutProperty', 'Query Interface', 'QueryStatusWB', 'Quit', 'ReadyState', 'Refresh', 'Refresh2', 'Regis terAsBrowser', 'RegisterAsDropTarget', 'Release', 'Resizable', 'ShowBrowserBar', ...
file write
Win32 版と cygwin 版の比較。
Windows 環境における file.write で改行コードはどう自動付与されるのか?
どうやら "\n" を Win32 版では CR-LF と扱い、cygwin 版では LF と扱っているようだ。
以下、Windows の Python 2.5 で。
from __future__ import with_statement with open("_testfile1", "w") as f: f.write("line1") f.write("line2") with open("_testfile2", "w") as f: f.write("line1\n") f.write("line2\n") with open("_testfile3", "w") as f: f.write("line1\r\n") f.write("line2\r\n")
cygwin の Python コマンドで:
$ python filetest.py $ od -c _testfile1 0000000 l i n e 1 l i n e 2 $ od -c _testfile2 0000000 l i n e 1 \n l i n e 2 \n $ od -c _testfile3 0000000 l i n e 1 \r \n l i n e 2 \r \n
次に Win32 の Python で python filetest.py を実行し、cygwin の od で確認すると、挙動がちがう。。
$ od -c _testfile1 0000000 l i n e 1 l i n e 2 $ od -c _testfile2 0000000 l i n e 1 \r \n l i n e 2 \r \n $ od -c _testfile3 0000000 l i n e 1 \r \r \n l i n e 2 \r \r \n
Python 2.6
Windows XP (SP3) 環境における Python のバイナリパッケージ
C:\>python -V Python 2.6
- py2exe-0.6.9.win32-py2.6.exe : 成功
- PIL-1.1.6.win32-py2.6.exe : 成功
- numpy-1.3.0-win32-superpack-python2.6.exe : 失敗
- "option /arch not understood: only native, nosse, sse2 and sse3 are valid."
未解決。
クリップボード
since 2011-12-02
クリップボードの内容が変更されたら何かをするプログラム:
ちなみに .NET だとこんな感じ:
py2exe
since 2011-12-02
http://www.py2exe.org/index.cgi/Tutorial
py2exe 環境では
__file__
は使えない。
hasattr(sys, 'frozen') でチェックせよという話。
Speech API
since 2011-12-03
http://metaspogst.blogspot.jp/2010/10/panda-171-and-speech-recognition-with.html
Microsoft Speech API で音声認識。
またしても ActiveState のレシピ:
http://code.activestate.com/recipes/93025-speech-recognition-in-windows-using-the-ms-speech-/
そこからリンクをたどって:
http://www.surguy.net/articles/speechrecognition.xml
speech.zip に入っている SpeechGui.py を Windows 7 SP1 x64 で動かしてみる。
コントロールパネルの「音声認識のプロパティ」によると、入っているエンジンは
「Windows用Microsoft音声認識エンジン8.0(日本語-日本)」
である。
Python 2.7.2 (x86), Python 2.7 comtypes-0.6.2, pywin32-216 が入っている。
事前に COM のライブラリを作っておく必要がある。
- スタートメニュー - すべてのプログラム - Python 2.7 - PythonWin
- Tools - Com Makepy Utility
- Select Library で Microsoft Speech Object Library 5.4 を選択。
- C:\Python27\lib\site-package\win32com\gen_py\C866…….py ファイルが作られる。
- nvda をビルドするときに source/comInterfaces に作られるファイルと似ているが同じではない。
この状態でコマンドプロンプトで python SpeechGui.py が動く。
日本語は?
Windows 8 は Haruka Desktop がこのままで動く。(2013年6月12日)
Windows 7 の場合は MS Speech Platform (x86) の Haruka が入っていれば
self.speaker = win32com.client.Dispatch("SAPI.SpVoice")
という部分を
self.speaker = win32com.client.Dispatch("Speech.SpVoice")
にすればよい。