python

Pelicanのインストールでこけたなら

Pelicanをpipでインストールしようとするとどうもpytzのインストールでこけてるので調べてみるとpytzのバージョンをpipが見つけれないとのこと。 Could not find a version that satisfies the requirement pytz (from pelican) なので、pytzを事前にpreオプ…

Pythonのクラスメソッド定義の整理

クラスメソッドとは? クラスメソッドはクラス内で定義されたメソッドで、かつインスタンス化しなくても呼び出すことができます。 クラス内で定義されるメソッドにはもうひとつ、インスタンスメソッドがあります。インスタンスメソッドは、インスタンス化さ…

Djangoで Jinja2導入のいろは

Djangoは最初からDjangoテンプレートが使えますが、GAE用のKayでJinja2テンプレートを使って以来Jinja2が手放せなくなってしまいました。 今回はDjangoでJinja2テンプレートを使う方法を簡単にまとめます。 ※ 導入手順検証のため、virtualenv環境を使ってい…

Django1.4のユーザ認証のいろは

Django1.4の認証機能を使ってユーザ登録とユーザログインを行うWebアプリをチュートリアル形式でまとめます。 (Python 2.7.2) 今回は、Userクラスをどう使うかを示すだけなので、重複チェックと暗号化は無視しているので、そのままでは本番運用には使えませ…

冗長読解シリーズ - ネストされた内包表記

大きな勘違いをしてたのでPythonチュートリアルのネストされた内包表記の例を冗長に読解しています。元ネタはこれ。 matrix = [ [1,2,3,4], [5,6,7,8], [9,10,11,12], ] [[row[i] for row in matrix] for i in range(4)] 元ネタの結果 [[1, 5, 9], [2, 6, 10…

Pythonの可変長引数のおさらい

普段使わないから理解が浅いし、理解が浅いから使わないし、使う必要に出くわさない程度しか書いてないから使わないし・・・と自己ループしてしまうので改めてチュートリアルで理解してみました。 def spam(arg, *args, **kargs): print arg print args prin…

Pythonチュートリアルで直面している単純な疑問

4.7.1のDefault Augument Valuesの def ask_ok(prompt, retries=4, complaint='Yes or no, please!'): while True: ok = raw_input(prompt) if ok in ('y', 'ye', 'yes'): return True if ok in ('n', 'no', 'nop', 'nope'): return False retries = retries…

Pythonのforループのelse節を冗長に読解

Python Tutorialの4.4のソースで「これ正しいんだっけ?」と悩み始めたら不必要に難しく考えてしまってはまりそうになったので、不必要に冗長に読解してみます。 元のネタはこれ for x in range(2, 10): for x in range(2, x): if n % x == 0: print n, 'eql…

sphinx-quickstartでValueError: unknown locale: UTF-8が出たら

Sphinxでsphinx-quickstartコマンドを打ってValueError: unknown locale: UTF-8のエラーが出たら、.bashrc、.profile、.zshrcのどれかに下記に行を入力後、シェルをリロードすればエラーが消えます。 export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8 ▼参…

FukPUG Meet-up vol.3を開催しました

今回は3名と少人数だったのでプロジェクタも使わず、お互いのディスプレイを見ながらのんび りとjkani4@Poly*Tankさんにinspectを使ったプラグインマネージャの紹介とnagaetty01さ んによるdotCloudにtracをデプロイするデモを行なって頂きました。 細かいメ…

Pythonのif文の条件式を改行するには

Q. Pythonのif分の条件式を改行するには A. 改行する前にバックスラッシュ(Windowsだと半角円マーク)を入力 ●解例 #!/usr/bin/env python # -*- coding: utf-8 -*- for i in range(1, 100): if i % 3 == 0 \ or "3" in str(i): print "(∴`lДk´)ノ彡#" + st…

FukPUGイベントを開催しました

2012年1月29日(日)にPythonのイベントを福岡AipCafeで午前の部と午後の部のダブルヘッダーで開催しました。 日曜日の朝10時からにもかかわらず午前中は13人・午後は7人もの方にご参加頂いて本当に感謝です。午前の部ではハンズオン、午後の部ではLTと(途中…

Python勉強会@福岡第4回に参加

2012年12月13日(火)に、Python勉強会@福岡第4回に参加してきました。 第2回、第3回と参加できなかったので楽しみにしていましたが、やっぱり楽しかったです! この勉強会に参加してると仕事でがっつりPython使いたいな、とつくづく思いますが、自分のスキル…

virtualenvの導入

複数のPythonの環境で開発するために、Pythonではvirtualenvというパッケージが用意されています。 ただ、このvirtualenv、ちょこっと調べた程度では私には今一理解できなかったので、環境を導入するのと同時に、今まで私がやっていた原始的なPythonのバージ…

Ubuntu10.04に複数のPythonをインストールする方法

Ubuntu10.04はデフォルトでPython 2.6がインストールされています。 この環境に2.7、3.2とGoogle App Engine(GAE)用に2.5をインストールした時のメモを転記しておきます。 ●前準備 ./configure --prefix=/usr/bin/python2.7 --with-threads --enable-shared …

Ubuntu10.04にApacheとmod_pythonをソースからインストール

★ apacheのインストール $ wget http://ftp.riken.jp/net/apache//httpd/httpd-2.2.21.tar.gz $ tar zxvf httpd-2.2.21.tar.gz $ cd httpd-2.2.21/ $ ./configure --enable-so $ make $ sudo make install $ sudo vim /etc/rc.local /usr/local/apache2/bin/…

福岡のPythonユーザーグループを作りました

2011年11月15日に福岡でPythonの勉強会が開かれる、ということで、以前からあればいいのになぁ、 と思っていた、福岡のPythonユーザーグループをFacebookグループとGoogleグループとで作りました。 年明け後の2012年1月には興味のあるかたにお集まりいただい…

初めてのsuper()メソッド

エキスパートPythonの中でsuper()メソッドのことが書かれていたんですが、super()メソッドを使ったことがなかったので少し調べました。 super()メソッドは第一引数に指定されたクラスの親クラスを返すメソッドで、以下のようなクラスの継承で使うことができ…

福岡でPythonの勉強会が開催されます

来年(2012年)になったら福岡のPythonの勉強会/コミュニティーを作ろう! と思っていたら、第一回勉強会が開かれるようです。 第1回 Python勉強会@福岡 http://atnd.org/events/21509 福岡でもPythonistaの活動が活発化するといいですね!

hashlibモジュールことはじめ

文字列のハッシュ化をする必要性がでてきたので、サラッと調べてみました。 ●セキュアハッシュとは... 文字列からハッシュ値を生成する事ができる ハッシュ値から元の文字列に戻す(復号化?)ことはできない 文字列とハッシュ値の組み合わせデータベースが…

EmacsをPython用IDEとしてセットアップ

1. python-mode.elをインストール ダウンロード先はこちら↓ https://launchpad.net/python-mode $ wget http://launchpad.net/python-mode/trunk/6.0.2/+download/python-mode.el-6.0.2.tar.gz $ tar zxvf python-mode.el-6.0.2.tar.gz $ cd python-mode.el-…

内包表記で多次元リストを生成

多次元リストだけでなく、タプルも作れますね。 論より証拠ということで。 playersという元の多次元リストから、内包表記を使って新たな多次元リスト、simple、とタプルで構成されるリストsimple2、を生成する例です。 >>> players = [["Giggs", 11, "Wales"…

複数行のCSVの書き込み

Pythonで複数行のCSVの書き込みをおさらいしておきます。 その前に、一行だけCSVに書きこむ方法も念の為メモ。 #!/usr/bin/env python import csv csvfile = "/tmp/spam.csv" csvdata = ["spam", "eggs"] writer = csv.writer(file(csvfile, 'w')) writer.wr…

Pythonのopen()関数の注意点

Pythonでファイルを作成しようと思って検索すると以下のようなosモジュールを使ったコードをよく見かけることになると思います。 import os f = os.open('spam.txt', 'w') f.write('') f.close() ところが、実際にこのコードを実行しようとすると、2行目の段…

Chrome上でPythonシェル

どれくらい便利なのか? Ubuntuをメインで使っていて、会社のWindowsでもPythonをインストールしているので、今のところどれくらいの需要があって、どれだけ便利で、どういう状況で使うのかよく分からないんですが、Chromeにインストールしてみました。 Pytho…

実行するPythonスクリプト自身の絶対パスを調べる

Pythonのスクリプトを実行するときに、実行するスクリプト自身の絶対パスを調べる方法を調べました。 Pythonでは、 __file__ で実行している自分自身を表すので、下記のソースで、 (1行目)スクリプト自身のファイル名 (4行目)スクリプト自身のファイル…

Ubuntuのpyexiv2で画像Exif情報を読み取り

Ubuntu10.04で画像のExif情報を操作したい場合、いくつか方法がありますが、今回はpyexiv2を試してみました。 Ubuntu10.04環境では、パッケージが用意されているので、コマンド一発でインストールができます。 $ sudo apt-get install python-pyexiv2 インス…

多次元リストのソート

多次元リストを手軽にソートする方法を練習してみました。 ①まず、ソートする対象になるリストを作ります。 >>> list = [ [2, "d", "1100"], [7, "z", "10"], [0, "t"] ] >>> list [[2, 'd', '1100'], [7, 'z', '10'], [0, 't']] ②内側のリストの1個目の要素…

Kayのテンプレートでエンコードを操作

Kayのテンプレートでてっとり早く携帯キャリアを特定する方法を試しました。※実運用ではkay-jpmobileやuamobileを使うほうがいいと思います。 やることは2つ。 アクセス元の端末情報(PCや携帯、ブラウザ情報)を取得する 端末に合わせてエンコーディングを…

GAEアプリでUnicodeDecodeErrorに対処する方法

Google App Engine for Pythonで日本語を使ったアプリケーションをアップロードすると、 UnicodeDecodeError : ‘ascii’ codec can’t decode byte とUnicodeDecodeErrorが発生するときがあります。 その場合、Kayを使っていれば、view.pyに、webappならmain.p…