タグ

pythonに関するvoidy21のブックマーク (174)

  • internのひみつ - atsuoishimoto's diary

    Pythonにはintern()という組み込み関数がある。結構特別扱いで重要な組み込み関数なのだが、使い道が今ひとつ分かりにくいのか知らない人も多いようだ。 intern <捕虜・危険人物などを>(一定の区域内に)拘禁する, 抑留する. [新英和(第7版)・和英(第5版)中辞典 株式会社研究社] なんだか物騒な関数だが、同じような機能を持つLisp族の関数から名前を拝借したのだろう。intern()をPythonスクリプトで書くと、だいたいこんな感じの処理になる。 _intern_map = {} def intern(s): if s in _intern_map: return _intern_map[s] else: _intern_map[s] = s s.interned = True return s 文字列sと同じ文字列が専用の辞書_intern_mapに登録済みなら登録済み

    internのひみつ - atsuoishimoto's diary
  • GitHub - erocarrera/pefile: pefile is a Python module to read and work with PE (Portable Executable) files

    pefile is a multi-platform Python module to parse and work with Portable Executable (PE) files. Most of the information contained in the PE file headers is accessible, as well as all the sections' details and data. The structures defined in the Windows header files will be accessible as attributes in the PE instance. The naming of fields/attributes will try to adhere to the naming scheme in those

    GitHub - erocarrera/pefile: pefile is a Python module to read and work with PE (Portable Executable) files
  • Perl Tips | Python で、設定ファイルを読み込む方法 (ConfigParser)

    Python で、例えば settings.ini などの設定ファイルからパラメータを読み込んで処理したいときには、ConfigParser というクラスを使う。その settings.ini の内容は以下のようになる。ご覧の通り、[credential]や [options] など、任意のセクションが必要になる(セクション名は自身で勝手に名づけてよい)。 [credential] username=admin password=password [options] port=9999 interval=10 ここでは settings.ini に username、password、port、interval と、4つのパラメータを用意している。このように settings.ini を用意しておき、これを Python スクリプト中から読み込むには以下のようにする。 import Con

  • examples/oauth/facebookoauth.py at master from facebook's python-sdk - GitHub

    python-sdk / examples / oauth / facebookoauth.py 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 11

  • Debian/UbuntuのPythonシェル(pythonコマンド)でTab補完を用いる - 試験運用中なLinux備忘録・旧記事

    PythonシェルのGUI環境である IDLE IPython といったものの中でTabキーを押すと、コマンド行シェルのように入力途中の文字列について候補が1つだけの部分が補完され、複数ある部分は再びTabキーを押すことで候補一覧を表示することができる。 Python(python(-[バージョン])コマンド)自体を端末から起動したときにも、以前Mandrivaを用いていたときには同様にTabキーで補完,候補一覧表示を行うことができるようになっていたのだが、Ubuntu(10.10時点)のPythonではTab文字がそのまま出るだけとなっていた。 端末から起動するPythonシェルの中でTab補完を用いるための処理と補完の操作 端末から起動するPythonシェルの中でTab補完を用いるためには rlcompleter readline の2つのモジュールをimport処理してTabキーを用

    Debian/UbuntuのPythonシェル(pythonコマンド)でTab補完を用いる - 試験運用中なLinux備忘録・旧記事
  • PythonでTumblrのライブラリを書いた - きちめも

    コーディング合宿でTumblrで何かしようかなーと思っていたけど,Pythonの既存のライブラリがちょっと微妙(開発止まってる+新しいAPIへの対応がイマイチ)だったので書いてみた.名前はpumblr. ソースはgithubに置いた. pypiはここ インストール easy_installがあれば(Debian系ならpython-setuptoolsをaptitudeインストール) $ easy_install pumblr 無い場合はソースから(rootで) $ python setup.py install 使う # モジュールのimport import pumblr # 'seikichi.tumblr.com' を読むには data = pumblr.api.read('seikichi') # quoteだけ5個取ってくる data = pumblr.api.read('sei

    PythonでTumblrのライブラリを書いた - きちめも
  • Compiz を Python からあやつる - daily dayflower

    タイトルは大袈裟。 ここ半年ほど Compiz のワークスペース切替器にキューブではなくデスクトップの壁(wall)を使っています。こっちのほうがキビキビ動くし。 んでこの wall plugin ですが,システム起動直後だと,ワークスペース切替時に壁紙がスクロールしないんです。まぁそんな仕様だと思えばいいんですけど,CompizConfig 設定マネージャを立ち上げて,「デスクトップの壁」プラグインを一度無効化して有効にすると,壁紙もスクロールするようになります。じゃあそういう仕様じゃないじゃん。 いままでいちいち起動後に CompizConfig 設定マネージャを立ち上げて修正していたんですけど,めんどくさい。CompizConfig 設定マネージャ*1が Python で書かれているっぽいので Python から Compiz の挙動を操作できるんじゃね,と思ってやってみました。 i

    Compiz を Python からあやつる - daily dayflower
  • Python レシピ更新 ハッシュの要素を挿入した順に取り出す - 銀月の符号

    『118:ハッシュの要素を挿入した順に取り出す』を 「PEP 372 で順序つき辞書提案中」という内容から、「標準モジュール collections に OrderedDict があるよ」という内容に更新! collections.OrderedDict 、その実装 collections.OrderedDict の実装は「順序の保持に双方向循環リストを用いる」というものだった。すべてのメソッドの計算量が通常の dict と同じオーダーとなっている*1とのこと。 なので「順序の保持に Python 組み込みの list*2 を用いる」実装のものとは特性が異なる操作があったりする。たとえば OrderedDict だと値のセット(__setitem__)は O(1)。 http://dev.pocoo.org/hg/sandbox/raw-file/tip/odict.py だと既存のキーが

    Python レシピ更新 ハッシュの要素を挿入した順に取り出す - 銀月の符号
  • Pythonでprefork型のデーモンを書く - yoshifumi1975's diary

    Pythonのお勉強を兼ねて、先日 Cで書いた C言語でprefork型のデーモンを書く(3): デーモン化 - Sleepless geek in Seattle をPythonに移植してみた。 条件分岐、ループ、関数定義、ファイル操作、fork、wait、シグナルハンドラ、連想配列、などなど短いプログラムだけど、いろいろな要素が入っているのでなかなか良いサンプルになった。 #!/usr/bin/env python import os import sys import signal import time MAX_CHILDREN=16 PID_FILE='/var/run/my_prefork_daemon.pid' hash_children={} def main(): #デーモン化 daemonize() #プロセスIDを書いておく write_pid() #シグナルハンドラ

    Pythonでprefork型のデーモンを書く - yoshifumi1975's diary
  • Pythonでいろんなバイナリファイルを覗いてみる – taichino.com

    プログラマをしていると、ちょくちょくバイナリデータから情報を読みたくなりますね。そんな時は、ブツブツ言いながらバイナリエディタと睨めっこすることになるわけですが、これが結構大変なので、何とか楽にならないかなぁと思って探していると、hachoirというナイスなpythonモジュールが見つかりました。このモジュールを使うとバイナリデータをパースして様々なデータを取得できます。かなり多くのデータフォーマットに対応している(現時点で70種類)のが素晴らしいです。 hachoirはいくつかのモジュールに分かれているのですが、大抵は以下をインストールすれば良いと思います。 $ easy_install hachoir_parser $ easy_install hachoir_metadata このモジュールにはhachoir-metadataというコマンドラインツールが含まれていて、コードを書かなく

  • ときどきの雑記帖 めぐりあい電脳空間編 2010年月(旬)

    ■_ 0.1+0.1+... んと、言語、処理系に関わらずほぼすべてのもので同じ結果になるんじゃないかと思います。 いまどきは IEEE 754でライブラリ丸投げな感じでしょうから。 とはいえ最下位桁(とさらにその下の桁)の扱いによって違いが出たりするんですが。 Hena Hena Nikki ~悔い倒れの日々~(2010-07-16) * [computer] 浮動小数点数のちょっとしたクイズ へるみさんの日記の記事。 GNU Emacs 環境でどうなるのかなと思い、試してみた。 (emacs-version) => "GNU Emacs 22.3.2 (i486-apple-darwin10.4.0, Carbon Version 1.6.0 AppKit 1038.32) of 2010-07-17 on hogehoge.local" (format "%.17f" 0.1) =>

  • Vimから使えるヘルパー関数をPythonで手軽に作れるvim_bridge | TRIVIAL TECHNOLOGIES 4 @ats のイクメン日記

    みんなのIoT/みんなのPythonの著者。二子玉近く160平米の庭付き一戸建てに嫁/息子/娘/わんこと暮らしてます。月間1000万PV/150万UUのWebサービス運営中。 免責事項 プライバシーポリシー vim_bridgeを使うと,vim上で使えるPythonのヘルパー関数を定義できる。vimスクリプトの中にPythonのコードを書いて,デコレートするだけなので,とても簡単。 easy_installなどでvim_brigdeをインストール後,vimスクリプトに以下のようなコードを書く。 python << endpython from vim_bridge import bridged @bridged def SayHello(first, last): return "Hello, %s %s!" % (first, last) endpython あとはvimからヘルパー関数

  • Google App Engine で全文検索 - Pyro Memo

    Google App Engine には今のところ全文検索機能がないので、色々試してみた。検索処理についての知識は、Web+DB Pressの53号を読んだ程度。 やりたいことは、Twitterみたいな感じで各ユーザーが短い文章を登録するようなサービスで、その発言内容からキーワード検索したい。できれば、スペース区切りで複数のキーワードを指定して絞り込みができるようにしたい。appengineなので、インデックス作成や検索処理だけで割り当てがなくならない程度に効率的に。 下記の3つの方法を試してみた。接尾辞配列もどきn-gramもどき オーソドックスn-gram で、結果として、3番目のオーソドックスなn-gramが今のところうまく動いてるっぽい。失敗パターンにも色々学ぶところはあったので、それぞれメモをまとめておく。 接尾辞配列もどきまず最初に試したのがこれ。接尾辞配列というのは今回のサー

  • 管理者権限なしでeasy_installを使う - スコトプリゴニエフスク通信

    管理者権限なしでeasy_installを使うには、virtual-pythonが簡単だと思っていたが、このエントリに書いてある方法はさらに簡単。Easy easy_install on Ubuntu Gutsy http://mg.pov.lt/blog/easy-easy-install参照先に書いてあることそのままだけど、紹介しておく。ホームディレクトリにbinとpy-libというディレクトリを作る。py-libがPythonモジュールをインストールする先、binがeasy_installでバイナリ・スクリプトをインストールする時のインストール先。 $ mkdir ~/bin ~/py-lib PYTHONLIBに~/py-libを追加し、easy_installのエイリアスを設定。-s、-dがポイント。以下の設定を~/.bashrc, ~/.zshrc等に追加しておく。 expor

  • 新スタイルクラスの内部の話

    原文:http://python-history.blogspot.com/2010/06/inside-story-on-new-style-classes.html 原文投稿者:Guido van Rossum [注意:この投稿はとても長くて技術的です] 表面上は、新スタイルクラスは、元々のクラスの実装と非常に似通って見えるが、新スタイルクラスでは次のような数々の新しいコンセプトが導入されている。 __new__()という名前の低レベルのコンストラクタ 属性アクセスのカスタマイズを一般的にできるようにするデスクリプタ 静的メソッドとクラスメソッド プロパティ(演算してから結果を返す属性) デコレータ(Python 2.4から導入) スロット 新しいメソッド解決順序(Method Resolution Order, MRO) このエントリーでは、これらのコンセプトについて光を当てていこう

  • yebo blog: Python 2.7がリリース

    2010/07/05 Python 2.7がリリース Pythonソフトウェア財団は、「Python 2.7」のリリースを発表した。Python 2.x系では最後のメジャーリリースとなり、今後はバグフィックスのみ提供される。今回は、Python 3.xで搭載されている機能がバックポートされているのが特徴で、以下が挙げられる。順序付き辞書型テストのスキップ機能や新たなassertメソッドを備えた新しいunittestモジュールIOモジュールの高速化str.format()メソッドでの自動番号付けフィールドFloat型と文字列の変換機能の改善(3.xからボックポート)TkinterでのTileのサポートmemoryviewオブジェクト(3.xからのバックポート)SetリテラルSetおよび辞書の包含辞書でのviewwith構文のネストの新しいシンタックスsysconfigモジュール 投稿者 zu

  • 「Python×Django×AWS」による モバイル向けソーシャルアプリ開発の裏側

    6月30日、株式会社gumi CTO 堀内康弘氏による技術セミナー「Python×Django×AWS で作るソーシャルアプリ ~3日に1つアプリをリリースできた理由~」が開催された。オプト主催のソーシャルアプリコンテスト タイアップセミナーの一環で、今回で2回目の開催となる。 6月30日、株式会社gumi CTO 堀内康弘氏による技術セミナー「Python×Django×AWSで作るソーシャルアプリ ~3日に1つアプリをリリースできた理由~」が開催された。オプト主催のソーシャルアプリコンテスト タイアップセミナーの一環で、今回で2回目の開催となる。 ソーシャルアプリ開発に Python×Django×AWSを選んだワケ gumiは、エンタメ情報に特化したモバイルSNS「gumi」を手がける開発会社で、日初の携帯向けOpenSocialプラットフォーム「gumi Platform」を提供

    「Python×Django×AWS」による モバイル向けソーシャルアプリ開発の裏側
  • Python高速化テクニック - atsuoishimoto's diary

    ここ2〜3日、InfoPileのパフォーマンスチューニングをしており、ちょっともたつきを感じるような部分をほとんど解消することができた。InfoPileで使用した高速化テクニックの中で効果が大きく、よくつかわれそうなものを紹介しよう。尚、以下のスクリプトはPython 2.6.4で実行した。 listよりtupleを使う 可変長である必要のないシーケンスは、できるだけlistではなくtupleを使って構築しよう。listの生成/解放コストは意外と大きいのだ。 import time def run1(): for i in xrange(1000000): [i, i+1, i+2, i+3, i+4, i+5, i+6, i+7, i+8] def run2(): for i in xrange(1000000): (i, i+1, i+2, i+3, i+4, i+5, i+6, i+

    Python高速化テクニック - atsuoishimoto's diary
  • Python プログラミング

    C++ のクラスと Python のクラス C++Python の大きな違いは、前者がコンパイラ向け、 後者がインタプリタ向けの言語であるということ。あたりまえだけど。 C++ では「クラス」はあくまで、ヘッダファイルなどでの「定義」であって、 コンパイラにかけるときには、実際にその定義されたコードが実行される ことはない。これもあたりまえ。 一方、Python はインタプリタなので、「クラス」文はいきなり実行されている。 もうちょっと具体的に言うと、: 1: class foo(object): 2: def bar(self): 3: print 'Hello, world!!' 4: 5: x = foo() 6: x.bar() 上記のような Python のプログラムがあったとき、C++ の感覚だと、 5行目から実行されているような気がする。で、foo() で foo クラ

  • Google App Engine の Model を JSON に変換する方法 - present

    Google App Engine (以下 GAE) で結果を JSON で出力したい場合、GAE SDK に同梱されている Djangosimplejson を使えばいい。ただ問題があって、simplejson で JSON にできるのは、Python の組み込み型*1だけ。Model や GqlQuery を JSON にはできない。 対応策として思いついたのは、Model や Query の内容を dict に詰める方法と、カスタム JSONEncoder を作る方法の2つ。私が選択したのは後者。 class GaeEncoder(simplejson.JSONEncoder): def default(self, obj): if hasattr(obj, '__json__'): return getattr(obj, '__json__')() # db.Query に対

    Google App Engine の Model を JSON に変換する方法 - present