タグ

ブックマーク / www.lifewithpython.com (10)

  • Python Tips: Python で main 関数を定義することのメリット

    今回は Python のスクリプトにおいてエントリーポイントとなる main 関数を定義することのメリットについて説明します。 # わざわざ main 関数を定義してその中に処理を書く def main(): ... if __name__ == "__main__": main() Python では来 main 関数を定義する必要はありませんが、経験者が書いたスクリプトではよく main 関数が書かれています。 筆者は Python を学び始めた頃にそのようなコードを見て「必要ないものをなぜわざわざ書くのだろう?」と疑問に思いました。 今回は筆者自身がかつて抱いたこの疑問に答えてみます。 尚、 main という名前を使うのはただの慣習です。 この名前の関数にしないといけない制約は特にありません。 記事において、「 main 関数を定義する」というのは、正確には上のコードのように m

    Python Tips: Python で main 関数を定義することのメリット
  • Python Tips: JSON を整形して表示したい

    今回は JSON 形式の文字列を Python で整形して表示する方法をご紹介します。 今回は次の 2 つのパターンを取り上げてみます。 シンタックスハイライトなし シンタックスハイライトあり 早速見ていきましょう。 シンタックスハイライトなし シンタックスハイライトが要らない場合は、標準ライブラリの json が使えます。 JSON が文字列に格納されている場合 JSON を格納した文字列が Python コードの中で取得できている場合は、いったん loads() で読み込んだ後に dumps() で再度ダンプし直すと OK です。その際に dumps() のオプション引数 indent を指定することでインデントの大きさを決めることができます。 import json JSON_SAMPLE = '{"_meta": {"hash": {"sha256": "hash"}, "pipf

    Python Tips: JSON を整形して表示したい
  • Python Tips: インタラクティブシェルの内容を保存したい

    Python でインタラクティブシェルの内容を保存する方法をご紹介します。 引数をつけずに python コマンドを実行すると起動するデフォルトのインタラクティブシェルにはそのような機能がないため、 IPython を使うのがよいでしょう。 IPython にはシェルの内容を保存する機能が備わっています。 $ ipython In [1]: a = 2 In [2]: b = 3 In [3]: c = a + b In [4]: %save saved_session.py 1-3 The following commands were written to file `saved_session.py`: a = 2 b = 3 c = a + b IPython のシェルの中で %save にふたつの引数を渡します。ひとつめは保存先のファイルの名前、ふたつめには対象行を指定します。対

    Python Tips: インタラクティブシェルの内容を保存したい
  • Python のタプルとリストの違い、タプルの使いどころ

    今回は基に立ち返って、 Python の組み込み型である「タプル」と「リスト」の違い、それと「タプルの使いどころ」について説明してみたいと思います。 「 Python タプル リスト 違い 」といったキーワードで Google 検索すると、多くのページで「リストとタプルは記法が異なります」「タプルはイミュータブルです」という説明だけがなされていて、それだけだとなぜタプルが用意されているのか、タプルはどんなときに便利なのかがわからないのではないかと思い、今回このテーマで書いてみようと思いました。 以下、 Python におけるリストが何なのかというのは読者の方はご存知だという前提でお話ししていきます。 まずはかんたんなおさらいとして、そもそもタプルとは何ぞやというところから見ていきましょう。 タプルとは Python における「タプル」とは、複数のデータを一直線に並べた「コレクション」タイ

    Python のタプルとリストの違い、タプルの使いどころ
  • ライブラリ: PyYAML

    「PyYAML」(ライブラリとしてimportするときは「yaml」)は、YAML形式のデータを扱うためのライブラリです。 YAMLはXMLやJSONと比べるとシンプルなので自分の手でparseするのでもさほど大変ではないかとは思いますが、やはり、ライブラリを使うのが早くて確実かと思います。 PyYAMLには大きく2つの機能――読み込みと書き込みとがあります。以下、順に見ていきます。 YAMLデータの読み込み import yaml FILEIN_DICT = "sample_dict.yaml" f = open(FILEIN_DICT, 'r') data = yaml.load(f) # 読み込む f.close() YAML形式のデータを読み込むには、yaml.load()を使います。引数には、読み込みモードで開いたファイルオブジェクトを渡します。 以下、「sample_dict.

    ライブラリ: PyYAML
  • Python Tips: 画像の Exif データを取得したい

    追記: こちらは Python 2 を対象とした記事です。 Python 3 に関する情報は末尾に少しだけ載せている ので、そちらに興味のある方は記事の末尾まで読み飛ばしてください。 Pythonを使って画像の Exif データを取得する方法をご紹介します。 Exif とは Exchangeable Image File Format の略で、画像のメタ情報を表すデータフォーマットです。写真であれば、カメラの機種や撮影した日付、位置情報などのデータを格納することができます。 Exif 情報は必ずしもすべての画像ファイルに備わっているわけではありません。 また、 Exif 情報がある場合でも、カメラの機材やアプリによってその中にどんな情報を格納するのかは異なります。 この Exif データを Python を使って取得する方法を以下ご紹介します。 結論からいえば、有名な画像ライブラリ PIL

    Python Tips: 画像の Exif データを取得したい
  • ライブラリ: json

    「 json 」は、その名のとおり JSON 形式の文字列やファイルを Python で扱うためのライブラリです。 json ライブラリの魅力は、何といってもシンプルな点です。「 ElementTree 」などに見られるような高度な機能は備えていませんが、当にシンプルなのですぐに使いはじめることができます。 以下、使い方を見ていきましょう。 json で主に使う機能は次の2つです。 json.load(f) json.dump(obj, f) 前者の load() は JSON ファイルからデータを読み込むときに、 dump() は JSON ファイルへとデータを書き込むときに使用します。まずは読み込みについて、続いて書き込みについて見ていきます。 JSONファイルの読み込み import json FILE_IN = 'sample_in.json' f = open(FILE_IN,

    ライブラリ: json
  • ライブラリ: simplejson

    simplejson は JSON 形式のファイルを Python で手軽に扱うためのライブラリです。 Python 2.6 で標準ライブラリに組み込まれた json ライブラリは、この simplejson と同じ内容になっています。 simlejson と json は使える関数なども全く同じで、 simplejson の方が頻繁にアップデートされている点が異なります。 simplejson の方は、関数のオプション引数が追加されていたりパフォーマンスが改善されていたりもするそうです。 Python を普通に使う分には json でよいかと思うのですが、実行速度が気になる状況や新しい機能を利用したい場合なんかには simplejson を導入するのがよいかと思います。 Stack Overflow の次のページなども参考になります。 What are the differences b

    ライブラリ: simplejson
  • ライブラリ: ElementTree

    PythonにはXMLを扱うためのメジャーなライブラリがいくつか存在します。シェアがどのようになっているかはよくわからないのですが、個人的によく見かけるのは、ElementTree、BeautifulSoup、lxmlあたりでしょうか。minidomもときどき目にします。 今回はそのうちの「ElementTree」について見てみたいと思います。 「ElementTree」は、XMLをファイルやテキストから読み込んだり、加工したり、保存したりするためのライブラリです。Python 2.5から標準ライブラリとなり、別途インストールをすることなく最初から使うことができます。 ファイルからの読み込み from xml.etree import ElementTree XMLFILE = "sample.xml" tree = ElementTree.parse(XMLFILE) # ファイルから読

    ライブラリ: ElementTree
  • Python で一番最初に入れるべきパッケージ setuptools と pip

    追記 20170227: pip は Python 3.4 以降では Python 体に同梱されるようになったとのことで、以下の作業は不要になりました。Python 体をインストールすれば pip がモジュールとして次の形式ですぐに利用できます。 次のページが参考になります。 Python モジュールのインストール 注: ここでは setuptools を紹介してますが、現在 setuptools は更新がストップしています。代わりに distribute というパッケージが開発されていて、それが setuptools の代わりになるので、以下、 setuptools の部分を distribute で読み替えていただくとよいかと思います。基的な使い方は同じです。 Python の魅力のひとつに、世界中で開発されている豊富なパッケージ(ライブラリ)群があります。 すばらしいパッケージ

    Python で一番最初に入れるべきパッケージ setuptools と pip
  • 1