61 件 見つかりました。

CHALOW Search - hiChangeLog ChangeLog INDEX

[ 前へ ] 1 2 3 4 5 6 7 [ 次へ ]

vpythonでオブジェクトによってlabelを隠す /vpython - hide labels by other objects2 [python]

[2008-06-09-01]の続き。
vpythonでlabelを隠すためのパッチを作成した。depthtestフラグによって隠す/隠さないを制御できるようにした。パッチは結構強引で、多分作成者の設計指針をないがしろにしており、そのへんが後ろめたい。まあ個人的な使用だからいいや。
I have written a patch of vpython in order to obscure/hide labels when they go behind objects. The behavior can be toggled through "depthtest" flag. Though this ad hoc patch might not meet with the developers design, some might feel confortable in their private usage.

environment:
- Windows MCE XP2, python 2.5.2
- developement softwares as described in VCBuild.txt
- CVS-HEAD source of vpython 4 beta retrieved at 8 Jun '08 (boost_1_35_0.zip should be decompressed in the "dependencies" directories, since "cvisual.sln" assumes that, not boost_1_34_1.zip)

command-line: (in "vpython-core2" directory where "include" and "src" (and others) directories exist)

patch -p1 < patch_file_shown_below.patch

diff-file:
diff -ur original/include/label.hpp modified/include/label.hpp
--- original/include/label.hpp	Wed Apr  9 06:42:02 2008
+++ modified/include/label.hpp	Wed Jun 11 20:12:15 2008
@@ -59,6 +59,9 @@
 	void set_yoffset( double yoffset);
 	double get_yoffset();
 
+	void set_depthtest( bool _depthtest);
+	bool get_depthtest();
+
 	void set_border( double border);
 	double get_border();
 
@@ -85,6 +88,7 @@
 	// In pixels:
 	double xoffset;   // offset from pos + space to the box
 	double yoffset;
+	bool depthtest;
 	double border;    // space between text and box
 
 	/// A common name for the font.
diff -ur original/include/util/displaylist.hpp modified/include/util/displaylist.hpp
--- original/include/util/displaylist.hpp	Sun Apr  6 10:11:52 2008
+++ modified/include/util/displaylist.hpp	Fri Jun 13 16:21:54 2008
@@ -18,6 +18,9 @@
 	shared_ptr<class displaylist_impl> impl;
  
  public:
+	bool depthtest;
+	displaylist() : depthtest(true) {}
+
 	/** Begin compiling a new displaylist.  Nothing is drawn to the screen
  		when rendering commands into the displaylist.  Be sure to call 
  		gl_compile_end() when you are done.
diff -ur original/src/core/display_kernel.cpp modified/src/core/display_kernel.cpp
--- original/src/core/display_kernel.cpp	Wed Apr  9 12:46:36 2008
+++ modified/src/core/display_kernel.cpp	Fri Jun 13 15:37:12 2008
@@ -700,13 +700,15 @@
 	
 	// Render all objects in screen space.
 	disable_lights();
-	gl_disable depth_test( GL_DEPTH_TEST);
+//	gl_disable depth_test( GL_DEPTH_TEST);
 	typedef std::multimap<vector, displaylist, z_comparator>::iterator
 		screen_iterator;
 	screen_iterator k( scene_geometry.screen_objects.begin());
 	screen_iterator k_end( scene_geometry.screen_objects.end());
 	while ( k != k_end) {
+		if(!k->second.depthtest) glDisable( GL_DEPTH_TEST);
 		k->second.gl_render();
+		if(!k->second.depthtest) glEnable( GL_DEPTH_TEST);
 		++k;
 	}
 	scene_geometry.screen_objects.clear();
diff -ur original/src/core/label.cpp modified/src/core/label.cpp
--- original/src/core/label.cpp	Tue Apr 15 05:49:58 2008
+++ modified/src/core/label.cpp	Wed Jun 11 20:12:15 2008
@@ -20,6 +20,7 @@
 	space(0),
 	xoffset(0),
 	yoffset(0),
+	depthtest(false),
 	border(5),
 	font_description(), // also tried "sans", which seems equivalent
 	font_size(-1), // also tried 10, which seems equivalent
@@ -37,6 +38,7 @@
 	space( other.space),
 	xoffset( other.xoffset),
 	yoffset( other.yoffset),
+	depthtest(other.depthtest),
 	border( other.border),
 	font_description( other.font_description),
 	font_size( other.font_size),
@@ -211,6 +213,18 @@
 	return yoffset;
 }
 
+void
+label::set_depthtest( bool _depthtest)
+{
+	depthtest = _depthtest;
+}
+
+bool
+label::get_depthtest()
+{
+	return depthtest;
+}
+
 void 
 label::set_border( double n_border)
 {
@@ -398,6 +412,7 @@
 		text_layout->gl_render(scene, text_pos);
 	} glMatrixMode( GL_MODELVIEW); } // Pops the matricies back off the stack
 	list.gl_compile_end();
+	list.depthtest = depthtest;
 	check_gl_error();
 	scene.screen_objects.insert( std::make_pair(pos, list));
 }
diff -ur original/src/python/wrap_primitive.cpp modified/src/python/wrap_primitive.cpp
--- original/src/python/wrap_primitive.cpp	Wed Apr  9 03:28:00 2008
+++ modified/src/python/wrap_primitive.cpp	Wed Jun 11 20:12:15 2008
@@ -225,6 +225,7 @@
 		.add_property( "height", &label::get_font_size, &label::set_font_size)
 		.add_property( "xoffset", &label::get_xoffset, &label::set_xoffset)
 		.add_property( "yoffset", &label::get_yoffset, &label::set_yoffset)
+		.add_property( "depthtest", &label::get_depthtest, &label::set_depthtest)
 		.add_property( "border", &label::get_border, &label::set_border)
 		.add_property( "box", &label::has_box, &label::render_box)
 		.add_property( "line", &label::has_line, &label::render_line)
example:
from visual import *

box(axis=(1,0,0), length=0.1, height=4, width=4, up=(1,0,0))
cylinder(pos=(-1,0,0), axis=(2,0,0), radius=0.1)

## default behavior
#foo = label(pos=( 1.3,0,0), text='foo')
#bar = label(pos=(-1.3,0,0), text='bar')

# new behavior
foo = label(pos=( 1.3,0,0), text='foo', depthtest=True)
bar = label(pos=(-1.3,0,0), text='bar', depthtest=True)

vpythonでlabelを隠すことができたっぽい /vpython - hide labels by other objects [python]

vpythonなるものがある。超簡単に3Dグラフィックを描画できる優れもの。
文字を表示するlabelなるオブジェクトがあるが、これは他のオブジェクトの背後に回っても描画される(つまり常に見えている状態)。あくまで個人的にだが、この振舞はあんまり有難くないと感じる:背後に位置するものはキッチリと隠れてほしい(今後そう思わぬ状況にも遭遇するだろうが、現在はそう思っている)。同様の意見の方もちらほらいる。だけど同等の機能は現行のベータにも備わっていない模様。

vpython is great, while I prefere labels that become hidden when some objects come in front of them.
fixed strings/notes, and hidden labels
[Visualpython-users] label behavior

なんで、自力で何とかすべくCVSのHEADのソースを取ってきていじった。うまくいった様なので顛末をメモしておく。
The "diff" shown below based on CVS-HEAD source succeeded (at least as far as I see) to obscure(hide) labels by objects in front of them. / By adopting a patch shown below to CVS-HEAD source, labels became hidden from view when they went behind objects.
My environment: python 2.5.2 on Windows 2000

結論: display_kernel.cpp 中 display_kernel::draw 内 "Render all objects in screen space" とコメントされてる部分の gl_disable depth_test( GL_DEPTH_TEST); をコメントアウト

以下やったことの冗長な記述。

Windowsにおけるビルド手順はView of /vpython-core2/VCBuild/VCBuild.txtにて丁寧に解説されている。私は記述の通りやったに過ぎない。

まず VPython-Win-Py2.5-4.beta26.exe をSourceForgeから入手しインストールする。必要なものを後に入れ替えるという手順をとっている。大前提として、これがちゃんと動作することを確認しておく。

次にCVSでソースを入手する。以下でできた。パスワードはカラ。(私はCVSの使用は初めてで、オプションの意味と意義は理解していない。CvsGuiのページでダウンロードしたファイルに入ってたcvsntを用いた)

cvs.exe -d :pserver:anonymous@visualpython.cvs.sourceforge.net:/cvsroot/visualpython login
cvs.exe -d :pserver:anonymous@visualpython.cvs.sourceforge.net:/cvsroot/visualpython co vpython-core2

安定版及び開発版(のベータリリース)のソースのtar ballがSourceForgeから入手できるが、これらのビルドは私の実力不足により失敗に終わった。
安定版について:配布バイナリは3.2.11だがtar ballで配布されているのは3.2.9のみ。ビルド方法は内包のINSTALL.TXTに詳細に説明されているが、MinGW/MSYSの環境構築が必要で結構面倒。numpyをインストールしろみたいな指示が出たけど実際に必要なのはNumericかnumarrayな感じだったり、またビルドしてはみたもののよくわからんImportErrorが出たり、手当たり次第に.pthを作るも状況は改善しないなどしたため、理解があやふやなまま断念することにした。3.2.9はpython2.4の使用を念頭に置いており、3.2.10でpython2.5使用に切り替えたようなので、この辺が関係あるのかも?いずれにせよ気力は尽きた。
開発版について:beta26を試した。MSWINDOWS.txtにまたまた詳細なビルド手順が記されているが、一層面倒なMinGW/MSYSとGTKの環境構築を含み(私見だが)苦行のように長い。頑張ってみたものの、一旦つまずいた所で気力が尽きてやめた。
CVSで入手したソースには必要なboostも付属するしVisual Studioのソリューションを開いてビルドすれば終わるという手軽で幸せな方法が用意されている。同梱の MSWINDOWS.txt にもその旨記載されていた。


入手したソースで dependencies の中にboostが用意されている。boost_1_34_1 なる展開済のディレクトリはできていたが、同梱のVisual Studioのソリューションでは boost_1_35_0 を使う設定になっていた。ソリューションの設定を修正してもいいのかもしれないが、幸い boost_1_35_0.zip は同梱されていたので、これを展開して使うことにした。

そしてビルド環境を整える。Visual C++ 2005 Express Edition と platform SDK を導入すれば良い。前者をVisual Studio Developer CenterのDownloadから導入した(Version 8.0.50727.42 だった)。platform SDKは既に導入済だった。確か http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en から入手したはず。スタートメニューでの表記は"Microsoft Platform SDK for Windows Server 2003 SP1"だった。幾つか細かな設定が必要だがVCBuild.txtに従って行った。

まずソースを修正せずにビルドしたもので動作確認をした。C:\Python25\Lib\site-packages\visual をゴッソリ消して、VCBuild.txtの指示通りにCVSで拾ってきたものと入れ替えた。入れ替え後のものにはgtk関連のDLLがあらかた抜けてた。そしてVS上でビルドする。成果物は多分 cvisual.pyd だけなのだろうが、これは自動的にあるべき場所に配置される。(VS上で Project => Property => Configuration Properties => Linker => General => Output File を見よ)なので、ビルド後に適当なスクリプトが動作すれば、ビルドには成功している。(気持ち、動きがスムーズになったと感じた)

いよいよソース修正。上述したように、一箇所のコメントアウトでできているみたい。display_kernel.cpp 中 display_kernel::draw 内 "Render all objects in screen space" とコメントされてる部分の gl_disable depth_test( GL_DEPTH_TEST); をコメントアウトする。OpenGLの事は全くわからないが、この行が前後関係を司っているらしい。

$ diff -u display_kernel.cpp.orig display_kernel.cpp
--- display_kernel.cpp.orig     Wed Apr  9 12:46:36 2008
+++ display_kernel.cpp  Sun Jun  8 21:30:02 2008
@@ -700,7 +700,7 @@
        
        // Render all objects in screen space.
        disable_lights();
-       gl_disable depth_test( GL_DEPTH_TEST);
+//     gl_disable depth_test( GL_DEPTH_TEST);
        typedef std::multimap<vector, displaylist, z_comparator>::iterator
                screen_iterator;
        screen_iterator k( scene_geometry.screen_objects.begin());


これでビルドしたら、文字がちゃんとオブジェクトに隠れるようになった!この状態で使い込んだわけではないが、まあこうしたことによる問題も起きないんじゃないかな、と思う。

pywin32によるMFCアプリケーションの雛形 [python][PyWin32][Windowsプログラミング]

pywin32のmfcラッパを試している。pythonで結構簡単にWindowsのダイアログが作れて、良さそう。
とりあえず手元で試して動いたコードをメモ。

とにかくダイアログを出す、という例が以下。拡張子をpywにして保存しダブルクリックすればOK。

from pywin.mfc import dialog
import win32con

class Mydialog(dialog.Dialog):

    dlgstyle = (win32con.WS_DLGFRAME | win32con.DS_MODALFRAME | win32con.WS_POPUP |
                win32con.WS_VISIBLE |  win32con.WS_CAPTION  | win32con.WS_SYSMENU )
    btnstyle = (win32con.BS_PUSHBUTTON | win32con.WS_TABSTOP |
                win32con.WS_CHILD | win32con.WS_VISIBLE)    
    dlgButton = 0x0080
    tmpl = [
        ["my dialog", (0, 0, 200, 100), dlgstyle], # dialog
        [dlgButton, "my OK",     win32con.IDOK, (5, 55, 190, 40), btnstyle], # button
        ]
    def __init__(self):
        dialog.Dialog.__init__(self, self.tmpl)


d = Mydialog()
d.DoModal()

ボタンを作成しハンドラを割当てた例が以下。アプリケーション作成にあたっての出発点的なもの。
from pywin.mfc import dialog
import win32con

class Mydialog(dialog.Dialog):

    dlgstyle = (win32con.WS_MINIMIZEBOX | win32con.WS_DLGFRAME |
                win32con.DS_MODALFRAME | win32con.WS_POPUP | win32con.WS_VISIBLE |
                win32con.WS_CAPTION | win32con.WS_SYSMENU | win32con.DS_SETFONT )
    btnstyle = (win32con.BS_PUSHBUTTON | win32con.WS_TABSTOP |
                win32con.WS_CHILD | win32con.WS_VISIBLE)    
    IDC_MYBUTTON = 1025
    dlgButton = 0x0080
    tmpl = [
        ["my dialog", (0, 0, 200, 100), dlgstyle], # dialog
        [dlgButton, "my OK",     win32con.IDOK, (5,  5, 190, 40), btnstyle], # button
        [dlgButton, "my button", IDC_MYBUTTON,  (5, 55, 190, 40), btnstyle], # button
        ]
    def __init__(self):
        dialog.Dialog.__init__(self, self.tmpl)
        
    def OnInitDialog(self):
        rc = dialog.Dialog.OnInitDialog(self)
        self.HookCommand(self.OnMyButton, self.IDC_MYBUTTON)
        self.btn = self.GetDlgItem(self.IDC_MYBUTTON)
        return rc

    def OnMyButton(self, id, cmd):
        if cmd==win32con.BN_CLICKED:
            ret = self.MessageBox('hello, my button', 'my caption', win32con.MB_YESNO)
            if ret==win32con.IDYES: cap = 'yes'
            else: cap = 'no'
            self.btn.SetWindowText(cap)
        
    def OnOK(self):
        rc = dialog.Dialog.OnOK(self)
        self.MessageBox('OnOK!', 'farewell')
        return rc

    def OnCancel(self):
        rc = dialog.Dialog.OnCancel(self)
        self.MessageBox('OnCancel!', 'farewell')
        return rc



d = Mydialog()
d.DoModal()

上では、Mydialogのコンストラクタに渡す引数でもってボタンを作成している。
でも以下をOnInitDialogに仕込んでも良い。
(こちらで指定するサイズは(たぶん)ピクセル単位で、一方tmplで指定したサイズはダイアログユニットなので、
大きさに関する数値は異なる。変換はself.MapDialogRectで行える。)
self.btn = win32ui.CreateButton()
self.btn.CreateWindow('my button', self.btnstyle, (10, 75, 340, 140), self, self.IDC_MYBUTTON)



上の例で、ダイアログのフォントを変え、タイマーを仕込んだ例が以下。
from pywin.mfc import dialog
import win32con

class Mydialog(dialog.Dialog):

    dlgstyle = (win32con.WS_MINIMIZEBOX | win32con.WS_DLGFRAME |
                win32con.DS_MODALFRAME | win32con.WS_POPUP | win32con.WS_VISIBLE |
                win32con.WS_CAPTION | win32con.WS_SYSMENU | win32con.DS_SETFONT )
    btnstyle = (win32con.BS_PUSHBUTTON | win32con.WS_TABSTOP |
                win32con.WS_CHILD | win32con.WS_VISIBLE)
    staticstyle = (win32con.WS_CHILD | win32con.WS_VISIBLE | win32con.SS_LEFT)
    IDC_MYBUTTON = 1025
    IDC_MYSTATIC = 1026
    dlgButton = 0x0080
    dlgStatic = 0x0082
    tmpl = [
        ["my dialog", (0, 0, 200, 130), dlgstyle, None, (14,'Arial')], # dialog
        [dlgButton, "my OK",     win32con.IDOK, (5,  5, 190, 40), btnstyle], # button
        [dlgButton, "my button", IDC_MYBUTTON,  (5, 55, 190, 40), btnstyle], # button
        [dlgStatic, "my static", IDC_MYSTATIC,  (5,105, 190, 20), staticstyle], # static
        ]
    timerid = 1
    def __init__(self):
        dialog.Dialog.__init__(self, self.tmpl)
        
    def OnInitDialog(self):
        rc = dialog.Dialog.OnInitDialog(self)
        self.HookCommand(self.OnMyButton, self.IDC_MYBUTTON)
        self.static = self.GetDlgItem(self.IDC_MYSTATIC)
        self.timerflag = False
        self.timercount = 0
        return rc

    def OnMyButton(self, id, cmd):
        if cmd==win32con.BN_CLICKED:
            if self.timerflag: self.KillTimer(self.timerid)
            else: self.SetTimer(self.timerid, 500) # 0.5s
            self.timerflag = not self.timerflag

    def OnTimer(self, nIDEvent):
        self.timercount += 1
        self.static.SetWindowText('timer! %d' % self.timercount)

        
    def OnOK(self):
        rc = dialog.Dialog.OnOK(self)
        self.MessageBox('OnOK!', 'farewell')
        return rc

    def OnCancel(self):
        rc = dialog.Dialog.OnCancel(self)
        self.MessageBox('OnCancel!', 'farewell')
        return rc



d = Mydialog()
d.DoModal()


上記はpywin32に付属のsliderdemo.pyが基なので、致命的な間違いは無いと思うし、実際手元ではちゃんと動いている。
ここまでくれば、後はMFCの知識だけでグリグリ書き進められそう。

Referrer (Inside): [2008-08-17-1]

簡易入力ダイアログ [PyWin32][python][Windowsプログラミング]

pythonでCOMを使うためPython for Windows extensions (see also: Mark Hammond's Free Stuff)を導入した。他の機能にも触れてみようとしている。mfcまわりもラップされているのでGUIアプリケーションも書けるようだ。windowsに特化するなら、MFCへの慣れを勘案すれば、wxPythonよりこっちを使う方がラクかな?

とりあえず簡易な入力ダイアログが非常に簡単に作成できるようなのでメモ。後々重宝しそうな気がする。

import pywin.mfc.dialog
print pywin.mfc.dialog.GetSimpleInput("my textbox title", 'my default value', 'my window title')

pythonでビデオ信号のキャプチャ [python][wxPython]

昔ビデオ信号のキャプチャ用プログラムをゴリゴリ書いてえらく苦労したことがある。pythonならもっと簡単なのではと思い調べた。
環境:Windows MCE, python 2.5, Princetonデジ造PCA-DAV2(ドライバのみインストール、ShowBizは入れてない), WAT-502B

案の定、すごいのがあった。
VideoCapture
以下だけで、とりあえずの静止画像保存ができる。超簡単。

from VideoCapture import Device
cam = Device() # "devnum"引数でデバイスを選べる
cam.saveSnapshot('hello.jpg')

また、以下でリアルタイムに画像が見られる。参考:基本 : kei@sodan
GetBmp1とGetBmp2は同様に機能してるようだが、互いのメリットデメリットはよくわからない。
StaticBitmapは使ってはいけないようだ
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()


Pythonでビデオキャプチャ作業メモ
PythonでUSBカメラから読み取り
コンターカメラ - Programming Must Go On
wxPythonとPILを使って縮小した画像を綺麗に表示CommentsAdd Star

Referrer (Inside): [2008-06-17-1]

Unicodeファイル名はos.walkでは拾えるがglobだと無理っぽい [python]

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を分かってくれないのか。
下記を見るとそんな感じだ。
http://pc11.2ch.net/test/read.cgi/tech/1153585095/588
http://pc11.2ch.net/test/read.cgi/tech/1153585095/598

なお上のtargetdirのUnicode指定を外すと、os.walkでも、globと同じく勝手な書換えが起きる。

POST送信の方法 - 特にmultipart/form-data [python]

スクリプトから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 でできた。使用例はスクリプト内に記してある。製作者に感謝。

pythonと日本語とunicode [python]

pythonを使っていて

UnicodeDecodeError: 'ascii' codec can't decode ...
なるエラーが出た時にどうするべきか?
[2007-10-13-1]で場当たり的な対処を学んだが、ちゃんと理解せねばと思いまた学んだ。
下記は私の現在の理解。もし間違ってたらすみません。

- Unicode
 ・21ビットの文字集合。かつては16ビットで、その領域はBMPと呼ばれ、UCS-2と同一。
 ・文字の種類とコードポイントなる数字の羅列が一対一対応。
 ・UTF-8、UTF-16などのエンコーディングでもって、コードポイントをバイト列で表現できる。

- python
 ・文字列型とUnicode文字列型は別物。前者はバイト列、後者はコードポイント列。
 ・入出力、演算の際に両者を自動で変換する親切機能あり(たぶん2.5まで)。
 ・上記機能により冒頭のエラーが出る場合が多い。対処方法は、扱うデータの種類(Unicodeか否か?エンコーディングは?)の把握に帰着する。
 ・標準ライブラリでUnicodeからの(への)エンコード(デコード)が可能。だがエンコーディング判別の機能はない。外部ライブラリでも、事実上の標準はなさそう。
 ・文字列加工はUnicodeでやるべき。


参考:
日本語文字列コード問題まとめ <= ここのpythonの記事は非常に参考になる
Python でUTF-8, shift_jis, euc_jpなど日本語を使う方法
jijixi's diary - Python におけるマルチバイト文字の扱いをまとめてみる
PEP 0263 -- Defining Python Source Code Encodings
Unicode - Wikipedia
Unicode HOWTO (python)
ユニコード - Pylons 日本語 - PythonWeb
WeekBuildのHACK日記 UnicodeとUTF-8の違い
内部エンコーディングに使われるエンコードをUTF-8に設定する方法。 - Perl使いのPythonちゃん

Python プログラミング <= エンコード判別のためのjcode.pyがある
ppkd(ppkf)を使って、文字エンコードを自動判別(文字エンコードについて) - Perl使いのPythonちゃん
nkf for pythonの入れ方と使い方 - ふにゃるん

ファイルかどうか、あるいはディレクトリかどうか調べるにはos.path.isfileかos.path.isdir [python]

T/O

import glob, os
for f in glob.glob('*'):
    print f, os.path.isfile(f), os.path.isdir(f)

pythonスクリプトのコマンドライン引数 [python]

sys.argvに格納されている。

import sys
for arg in sys.argv:
  print arg
see: http://reddog.s35.xrea.com/wiki/Python%C8%F7%CB%BA%CF%BF.html

[ 前へ ] 1 2 3 4 5 6 7 [ 次へ ]

ChangeLog INDEX
Powered by chalow