S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
昔ビデオ信号のキャプチャ用プログラムをゴリゴリ書いてえらく苦労したことがある。pythonならもっと簡単なのではと思い調べた。
環境:Windows MCE, python 2.5, Princetonデジ造PCA-DAV2(ドライバのみインストール、ShowBizは入れてない), WAT-502B
案の定、すごいのがあった。
VideoCapture
以下だけで、とりあえずの静止画像保存ができる。超簡単。
from VideoCapture import Device cam = Device() # "devnum"引数でデバイスを選べる cam.saveSnapshot('hello.jpg')
import wx, os, sys import Image,ImageDraw from VideoCapture import Device class MainWindow(wx.Frame): def __init__(self,parent,id,title): wx.Frame.__init__(self, parent, wx.ID_ANY, title, size = (400,400)) self.cam = Device() wx.EVT_PAINT(self, self.OnPaint) wx.EVT_IDLE(self, self.OnIdle) self.Show(True) def OnIdle(self, evt): self.Refresh(False) def OnPaint(self, evt): dc = wx.PaintDC(self) dc.DrawBitmap(self.GetBmp1(), 0, 0, True) def GetBmp1(self): image_pil = self.cam.getImage() image_wx = wx.EmptyImage(image_pil.size[0],image_pil.size[1]) image_wx.SetData(image_pil.convert('RGB').tostring()) return image_wx.ConvertToBitmap() def GetBmp2(self): buffer, width, height = self.cam.getBuffer() image_wx = wx.EmptyImage(width, height) image_wx.SetData(buffer) return image_wx.ConvertToBitmap() app = wx.PySimpleApp() frame = MainWindow(None, -1, "Imaging") app.MainLoop()
Windows XP MCE with python 2.5
ここではアクサン付きの'e'を'E'と表記すると約束する。(文字化けが起き得ない確実な記録を重んずる)
ディレクトリ'unicodetest'以下に'hogE.txt'なるファイル名の空ファイルを作成した。
で、以下を実行した。
import os, glob targetdir = u'unicodetest' for dirpath, dirnames, filenames in os.walk(targetdir): for fname in filenames: print fname.encode('utf-8') os.chdir(targetdir) for f in glob.glob(u'*'): print f.encode('utf-8')ファイルにリダイレクトしてメモ帳で中身を確認したら
hogE.txt hoge.txtだった。globでは'E'が'e'に書換えられている。Unicodeを分かってくれないのか。
スクリプトからcgiに変数を直接渡せると便利。ファイルも渡せるともっと便利。これがpythonで実現できるか?
変数だけだったら問題なく可能。
urllibを使ってPOST送信 - Perl使いのPythonちゃん
ではmultipart/form-dataでファイルも渡せるか?
どうやら標準では無理のようだ。
だけどこれに取り組んだ有志が既にいる模様。
ASPN : Python Cookbook : Http client to POST using multipart/form-data
pythonスクリプトからmultipart/form-dataを送る。
いくつか実現方法があるようだが、http://odin.himinbi.org/MultipartPostHandler.py でできた。使用例はスクリプト内に記してある。製作者に感謝。
WWWで見たサンプルコードを自分用に書き直してメモ。
import wx clp = wx.Clipboard() clp.Open() if clp.IsSupported(wx.DataFormat(wx.DF_BITMAP)): do = wx.BitmapDataObject() clp.GetData(do) bmp = do.GetBitmap() bmp.SaveFile('clp.png', wx.BITMAP_TYPE_PNG) print 'finished' else: print 'bitmap is not available on the clipboard' clp.Close()win32apiとlibpngの直叩きで同じことをした経験があるが、(wx)Pythonであまりにも簡単に出来て驚嘆した。あの苦労は何だったのだろう。。。
pythonを使っていて
UnicodeDecodeError: 'ascii' codec can't decode ...なるエラーが出た時にどうするべきか?
Windows(DOS、コマンドプロンプト)で用いるバッチファイルの戻り値はどうなっているのか。
・DOSコマンドの戻り値は%errorlevel%に格納される。
・バッチファイルで例えば Exit/b 7 とすると、バッチ呼出し元の%errorlevel%に7が格納される。
・上記の指定が無い場合、バッチの終了によって%errorlevel%は変更を受けない。
ということを下記で学んだ:
バッチメモ(Hishidama's bat-file Memo)
DOS/V & Windows コマンド・プロンプト・リファレンス
DOSプロンプトで発行したコマンドの結果を調べる
オマケ
バッチ・ファイル中で日付をファイル名に使用する
T/O
dd if=\\.\e: of=c:\temp\disc1.iso bs=1Mhttp://www.chrysocome.net/dd
T/O
import glob, os for f in glob.glob('*'): print f, os.path.isfile(f), os.path.isdir(f)
sys.argvに格納されている。
import sys for arg in sys.argv: print argsee: http://reddog.s35.xrea.com/wiki/Python%C8%F7%CB%BA%CF%BF.html
[2007-04-09-4]とほとんど同じ。
わけあってまたインストールした。今度はEmacsW32に入れる。
apel-10.7 と ddskk-20080504 の組み合わせ。emacsにPATHを通して、設定ファイルをいじらずに下記でまあできた。
make make what-where make install
LANG=en_US.UTF-8なDebian Etchから、Windowsの共有ディレクトリをsmbfsでマウントし、日本語ファイル名も正しく表示させたい。
下記でできた。
smbmount //Mymachine/mydir /mnt -o codepage=cp932,iocharset=utf8オプションをつける際にスペースがあるとうまくいかない。つまり、下記はダメな例。
smbmount //Mymachine/mydir /mnt -o codepage=cp932, iocharset=utf8参考:http://lists.debian.or.jp/debian-users/200405/msg00071.html
Windows上のの日本語ファイル名のファイルをLinuxにコピーし、Linux上でもちゃんと見られるようにしたい。
LANG=en_US.UTF-8なDebian Etchにコピーする際に、WinSCP4.0.7で、接続プロトコルとしてSFTPを用い、Session選ぶ画面("WinSCP Login"ウィンドウ)の左のEnvironment => SFTPのProtocol optionから"Server does not use UTF-8"をOffにしてやってみた。WinSCP上では、コピーしたファイルが正常に見れた。また、PuTTY 0.59 ごった煮版で、設定ダイアログのウィンドウ=>変換=>文字セットをUTF-8としてログインしてみたら、lsで先にコピーしたファイル名が正しく表示された。
どの段階でどの文字コードがどういう風に使われあるいは変換されているのかイマイチ理解できていないが、まあうまくいってそうなのでいいだろう。
参考:日本語ファイル関連メモ
以下を見ながら設定して万事解決。
http://park15.wakwak.com/~unixlife/linux/de-network.html
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
最終更新時間: 2010-03-08 22:21