読者です 読者をやめる 読者になる 読者になる

それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

SpeakerDeck のスライドを取得してローカルで見る

SpeakerDeck をオフラインで見たい Speaker Deck で良さげなスライドをEvernoteに溜め込みたいなと思った。 ブックマークしてても検索出てこないし。どうしようかな~っておもって。とりあえずダウンロードしてみることにした。 URLをスクレイピングするのに…

python の subprocess 起動で、起動コマンドのstdin に書き込む

起動して入力をわたしたい。 cmd1= "cat" p = subprocess.Popen(cmd1.strip().split(" "), stdin=subprocess.PIPE) p.stdin.write("Hello World\n".encode('utf8')) コマンドを起動するときに、 stdin に PIPEを指定する。実行中の python と サブプロセスの…

pythonでHTMLをパースしてXpathする

python でも xpath したい。 libxml でパースするには、lxml を使うと楽 pip install lxml 使い方。 lxml.html を使うと確実に、パースする事ができる。parse は IO を取るのでStringIOを使うことになる。 lxml.html.parse(StringIO(page.html)) サンプル im…

pythonのORM:SQLAlchemy の基本的な使い方

SQLAlchemy を使ってみる。 目次 SQLAlchemy を使ってみる。 目次 インストール テーブルの作成 手順のおさらい RDBMS への接続 テーブル定義のクラス。 INSERT/UPDATE をする。 INSERT の例 UPDATE について DELETEする。 INSERT・UPDATE・DELETE のキャン…

PythonでPOSIXのMessageQueue を使う。

POSIX の メッセージ・キューを使う。 プロセス間通信などと呼ばれる。POSIXのキューを使ってみる。 プロセス間通信 - Wikipedia プロセスとプロセスのデータのやり取りにメッセージ・キューを使うことで幾分楽になる。マルチスレッド以前に複数プロセスでデ…

python3 urllib でPOST/GET/PUT と JSON 送信

python3 の urllib を使う。 ひさしくpython2.7 だし全然不満がないのですが。python3.6 の文字列展開とjinja2 が便利そうだしそろそろ python3 使ってみようと思い立って、まずは基本的なリクエストを投げるところから。 urllib.request で各種リクエストを…

raspberryPiでpythonコマンドがすごく遅い時があるのでなんとかする

python コマンドがすごく遅い コマンドによるのですが、python で出来たコマンドがすごく遅い 調べてみたら、zip 化 されたバイナリ(eggをまとめたもの)になってるので、実行時に展開が走るので遅い。本当に遅いんです。 もとのソースコードを用意したほうが…

配列の途中に要素を追加・配列に要素(配列)を追加してlist に足して行く方法

python のlist に要素を追加するには 要素を追加するには append が使える a = [1,2,3] a.append(1) print a #->[1, 2, 3, 1] python のlist の途中に要素を追加するには 配列の途中に、要素を追加するには、 insert が使える。 a = [1,2,3] a.insert(1, 'a'…

NHK らじる★らじるの再生スクリプトpythonで書き直し。

nhk 夏休み子ども科学電話相談の季節です!! 今年は他のことに夢中になっていて、すっかり前半戦を聞き逃してしまいました。 聞き逃してしても、録音出来るように、スクリプトを作りました。 しっかし、毎年この季節に、Radikoとらじる★らじるのスクリプト…

setup.py install したパッケージを消す

setup.py で インストールしたパッケージを消すには python setup.py install よく出てきます。よく使います。でも間違ってインストールした時にどうするの pip list pip uninstall パッケージ名 pip 使えば出てきます。 pip がない場合は入れて下さい.

expect自動入力 を python で実現する

expect 便利ですよね。 expect コマンドがあればターミナルの自動入力が出来ます。 ruby でも使ってました。 でも ruby は gems がもう地獄でちょっとずつ python / javascript に移行しようと思っています。 使い方:import import pexpect 起動と処理待ちは…

Pythonでシグナル(sig term)をハンドリングする。

SIGTERMをハンドリングする。 調べたら、標準パッケージのsignal があった import signal import sys def sigterm_handler(signal_number, stack_frame): some_function_to_clean_up() sys.exit(0) signal(signal.SIGTERM, sigterm_handler) なるほどー これ…

Python で空じゃないディレクトリを削除する方法

Pythonでディレクトリを削除しようとすると os.rmdir だけど import os os.rmdir("/path/to/not_empty_dir") 実行すると not empty で止まる。 OSError: [Errno 39] Directory not empty: ま、当然なんだけど。 消す方法 shell をcall して rm -rf path/to/d…

Python で Ctrl+C のシグナルハンドラをやる

ctrl+ c でシグナルを取得したい たとえばファイルを作っている時に、途中で中断するとか。 その際に、途中のファイルや作業用ディレクトリを消したい。などと KeyboardInterrupt を監視する。 一番カンタンなのが、KeyboardInterrupt を見ることなんだ。 tr…

python で pry と同等にREPL をコードの途中から入れるデバッガ

python でも rubyのpry と同じことをしたい・・・・ require 'pry' Thread.new{|t| do_something binding.pry } マルチスレッドの処理をするには、pry があるととても楽。 python で同じことをするには IPython 探してみたら、IPython.embed があった。 from…

easy_installをユーザー空間にインストール

Python でMechanizeをインストールしようと、easy_installをしたら、パーミッション・エラー 普通にeasy_installをするとパーミッション・エラーになる。 error: can't create or remove files in install directory The following error occurred while try…

Pythonのインタラクティブシェルの設定

Pythonでirbライクなシェルを使う。昔会社のWikiに書きためていたモノを持ってきた。ノウハウ系は会社のWikiだけに書いてると、やっぱりリスクだわぁ。 デフォルトのPythonシェル IPythonもあるが、インストール不要のデフォルトで良いと思う。ipyth…

HtmlDiffの日本語訳が・・・

Pythondifflib日本語訳を読んでいた 日本語訳 class HtmlDiff このクラスは、二つのテキストを左右に並べて比較表示し、行間あるいは行内の 変更点を強調表示するような HTML テーブル (またはテーブルの入った 完全な HTML ファイル) を生成するために使い…

PythonでMHTML

http://www.example-code.com/python/mht_downloadToString.aspにあった。Chilkatというライブラリらしい。 CDO.Message解決したので試さなかった。でもいろいろおもしろそうなパッケージではある。

ローカルプロキシスクリプト

Pythonの勉強にローカルプロキシ書いてみた。./cache/に読み込んだCSS/JS/IMG/HTMLデータをディレクトリ構造を再現してコピーする。ローカル保存スクリプトを兼ねてみた。 #eoncoding:shift_jis import SimpleHTTPServer import threading import BaseHTTPSe…

PHPとPython

PHPとJavaとPython見ててわかったこと。PHPはかなり良いところ取り言語。 PHPのクラス PHP5で作るクラスは、Javaっぽいが、Pythonっぽく、可変変数がPerlっぽい、ループに入れるとJavaScriptっぽい

Python の日本語

この結果の差はなんだろう。 C:\py\python >>> import sys >>> sys.stdout.encoding #標準出力のエンコード 'cp932' >>> sys.stdin.encoding #標準入力のエンコード 'cp932' >>> sys.getfilesystemencoding()#ファイルシステムのエンコード 'mbcs' >>>cp932…

Pythonのファイル読み書き。

画像のようなバイナリファイルを読み書きするには、みんなのPythonで出ている例では駄目なのだろうか。urllib2と組み合わせたら、うまく動作しない。urllib2でイメージを取得すると、BASE64文字列でなく、バイナリを返してきた。保存できなかった。ググって…

Pythonの予約語

Pythonのselfは予約語じゃないよね?Pythonはやたらとself が出てきて、javaやPHP そしてrubyにあるthisがない。それにselfを変数としてメソッドの引数に書く。綺麗なのか汚いのかわからない。でも、見方を変えると?とってもスマート。selfは予約語じゃない…

Pythonのrange関数

range 関数はわかりにくい。他言語ユーザーはぱっと見てぱっとわからないと思う。なのでforで使うための関数ですよ。と説明することにした /* C/Javaのfor */ for ( int i=100;i<110;i++){ out.print(i); } ##Python の for for i in range(100,110) : print…

Generator 関数

なんか、ごっついなまえがついてるけど、 for x in A や while( some.hasNext() ) の形式だけでは足りないので、CやJavaで出来る、while( (x = r.readLine() ) ) が使えるようにするってことのようだ。 def gen( obj ): x = " " while( x != None ): x = obj…

Python2.5の日本語問題

まだ片付かない。日本語。 Windows環境でもUTF-8で書くのが良いのか?おれはそうは思えない。 たとえば、こんなコード。 入れた文字を出力する #encoding:utf-8 a = raw_input("なんかいれて? : ") print aWindowsのcmd.exeから実行してみる C:\pyhton>pytho…

PEPとは

Python Enhancement Proposal 略して PEP PythonのドキュメントやGuidoのブログを読んでるとPEP PEPと登場する。なんだこれはと思ったので調べたらそういうことらしい。PEPとは Python Emhancement Proposal :日本語だと。「こんなの作って、Pythonをより良…

TomcatでJythonを動かしてみる。

Jythonはおもしろい。Tomcatで動かしてみた。JSPで動かした。WEB-INFにjython.jarを入れてJSPでimportした。GCがうまく呼ばれずにJavaVMに居座り続けるのでちょっと使えない。 Pythonっていろんな環境で動作するのでJavaの夢を引き継いでるよなぁとか思う。…

Python2.5の機能

初めて触ったのがPython2.5だったので、マニュアルもそれを読んでいた。じつは大幅なアップグレードされていることを知り驚いた。Python 2.5が登場 450以上のバグを修正し信頼性を向上 これをよむと、俺のwith構文の解釈がおかしかった。恥ずかしい。。。2.5…

Iteratorの定義

PyJUGの石本 敦夫さんのスライドをみた。PythonはなんでもかんでもIteratorにすることが可能。スライドより、Iteratorを実装したオブジェクト作成例 class AIterator(object): """seq1,se2内の要素を交互に返すIterator""" def __init__( self, seq1,seq2 ):…

文字コードが変換されるタイミング

タイミングがつかめない。PHPともPerlとも違うし、Javaとも違う。この二つの違いをよ〜く考えよう。 >>>a = "aaa" >>>a 'aaa' >>>print a aaa>>>a = "aaa\r\n" >>>a 'aaa\r\n' >>>print a aaa >>>いまいちつかめない.注意して見ていると、''の有無に気づいた…

Pythonで可変変数、可変関数

PHPなら構造がシンプルなので、 $methodname = "loadfilter"; $someClass->$methodname( $fff , );等と書ける。これはPHPの非常に便利なところ。これを使わないとPHPのソースはすっきりしない。ClassをXMLで定義するなんて無茶も出来るし、SimpleXMLモジュー…

PythonでWin32comを使えない

るびまを見た。Win32OLE 活用法 【第 7 回】 ほかの言語での COM さっそく、やってみた。。。動かないOnz。調べてみた。win32comは標準ではインストールされないらしい。RubyMagazineには書いてなかったのだが。記述漏れかな。 Python for Windows 95, 98, N…

for ( i =0;i

Generatorってつまりそういうことだ。Iteratorを作る(generate)ってことらしい。 間違ってるんかな。あした調べる

Python 2.3の新機能を見直してみる。

今日覚えたことは、Python2.3で追加された機能らしい。 スライスの拡張(1) >>>#みんなのPythonでは .reverse()をつかってた >>>a = range(10) >>>a.reverse() [9,8,7,6,5,4,3,2,1,0] >>>#スライスの拡張を使えばSimple >>>a[::-1] [9,8,7,6,5,4,3,2,1,0] >>>…

配列のループにEnumerateとIterate

配列をforループで順次取り出すには配列毎に便利なメソッドが用意されているSequenceの場合 a = "goooooooooooogle" for x,y in enumerate( a ): print x, " = ", y Dictionaryの場合 a = {"Perl","Larry","Python":"Guido", "ruby":"Matz"] for x,y in a.it…

リストを文章で理解させる

filter()を使わず、map()を使わず、値をチェックする。そんな方法。かなり特徴的 配列から、偶数を取り出し、各要素を2乗する処理。 さっきのmap()とfilter()を使うとこうなる def f(x): return x%2 == 0 seq = filter( f, range(1,10) ) seq = map( lambda…

変数を削除する

del x del y[1:8] del z[:] と書く。以上。

関数の引数は配列で渡す

ここがちょっと特徴的か? 関数のデフォルト値 def f( i, foo = "bar" ): print foo print i f(10) # # bar # 10 関数のデフォルト値2 def f( i, foo="bar", hoo="book" ): print i print foo print hoo f( 100, hoo="comic" ) #100 #bar #comicデフォルト…

PythonのLambda

lambda で関数への参照を返せる def f(n): """lambdaサンプル""" return lambda x : x + n JavaScriptだとこんな感じかな? var f = function(n){ return function(x){ return n+x; } } JavaScriptの関数をイメージすると理解しやすかった。

なぜPythonを始めるか?

PHPのPEARがいまいち。 PerlのCPANはMSDN並の巨大ダンジョンで困った。 俺の中でCPANとMSDNはラストダンジョンとエキストラダンジョン 宝箱いっぱいなのでたまに冒険に出かける 日常的に使いたくない Pythonアイコンがかっこいい。Rubyのアイコンはダサイ。 …

PythonのDocStringの書き方

def function() : """This is a Sample function.""" print 関数宣言 def の次行に書く。 先頭は大文字にする 末尾はピリオドで終わる 文字列は引用三つ """ でquoteする

with 構文のサポート

ECMAScriptには with 文というモノがあるwithを使えば、名前空間を変えることが出来る デフォルトの名前空間は window #type="text/javascript" with( window.document.location ){ alert("test");//関数が見つからないエラーになる window.alert("test");//…

例外を投げる

throw Exceptionと書きたいところだが、raise とかく raise Excetion , "エラーです" raise Exception("エラーです")なぜ2番目の書き方がゆるされるか? ExceptionがClassだから。ExceptionがClassということは、ユーザー定義のExceptionを利用できる class …

条件分岐に使える 例外処理

私は、Javaでtry 〜 catch を条件分岐の代わりに使うのは非推奨と習った。富豪プログラミングの立場では推奨かもしれない。Pythonでは条件分岐に使えと言わんばかりの使用になっているPythonの [try 〜 catch] try: except A: except : else: finally: のセ…

"." や ".." を使った、パッケージの相互参照

親子のときは、簡単にImportできるんだけど、従兄弟くらいになると面倒だ。パッケージ構造 = ディレクトリ構造 だとすれば [..] (親) や [.](カレント) のような記述は出来ますか?出来ます。ただしPython 2.5以降 # "." がたくさん出てくるので 注意 from .…

標準モジュール

Pythonには豊富な標準モジュールがある。Pythonインストール時にまとめてインストールされる。いくつかの、特殊モジュールはPythonインタプリタに組み込まれているが、通常はモジュールとして提供される。 sys 覚えておくべきモジュール sys.path はPythonで…

配列の扱い

PythonのプログラミングはJavaScriptに似ている。文法はまるで似ていないが。発想が似てる。 配列の動的インクリメント Javascriptのばあい var hoge; hoge[hoge.length] = "test1"; hoge[hoge.length] = "test2"; hoge[hoge.length] = "test3"; //hoge = { …

モジュールと名前空間とclassのImport

Pythonには標準モジュールがある。使い方は一般的。 #Simple XML-RPC Serverの例 import xmlrpclib from xmlrpclib import Fault import SocketServer import BaseHTTPServer import sys import osここでのポイントはfrom。FROMを使うとローカルの名前空間に…