| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

Python

提供: MyMemoWiki
2024年9月17日 (火) 08:01時点におけるPiroto (トーク | 投稿記録)による版 (→‎Macにインストール)
ナビゲーションに移動 検索に移動

| Python ライブラリ | サンプルコード | Python サンプルコード | まとめ | 言語まとめ Python | 標準ライブラリ | Python 標準ライブラリ概観 | ライブラリ | Django | Flask | Pyramid | Zope | IronPython | Google App Engine | Pillow | Python Imaging Library | Beautiful Soup | Python NumPy | Python matplotlib | Python Win32 Extensions | pyExcelerator | Jython | PyDev | PyQt | PyScripter | ブログカテゴリ(python) |

目次

Python

インストール

Macにインストール

  • Homebrewのインストール

https://brew.sh/

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  • pyenv のインストール
brew install pyenv
  • pythonバージョン確認
$ pyenv install --list | egrep '[ ]+3.*'
  • pythonインストール
$ pyenv install 3.12.6
  • 以下のエラーの場合
The Python lzma extension was not compiled. Missing the lzma lib?

xzライブラリのインストール

brew install xz

再インストール

$ pyenv uninstall 3.12.6
pyenv: remove /Users/piroto/.pyenv/versions/3.12.6? [y|N] y
pyenv: 3.12.6 uninstalled
$ pyenv install 3.12.6

言語まとめ

サンプルコード(ファイル、コレクション・・・)

サンプルコード(オブジェクト指向)

標準ライブラリ概観

詳細
概要
処理内容 標準ライブラリ
OSインターフェース os
ファイルのワイルドカード glob
コマンドライン引数 sys
標準エラーを出力しプログラムを終了 sys
正規表現を利用する re
数学 math
URL による任意のリソースへのアクセス urllib
インターネットアクセス urllib2
日付と時刻 date、datetime、time
時間計算 time
データ圧縮 zlib
パフォーマンス計測 timeit
品質管理 doctest
出力書式 repr、pprint、textwrap、locale
テンプレート Template
シリアライズ pickle
バイナリデータレコードレイアウトでの作業 struct
オブジェクトのコピー copy
マルチスレッド threading
ロギング logging
XML Dom xml.dom
XML ElementTree xml.etree
データベースの使用 sqlite3
JSONエンコードとデコード json

ビルトインオブジェクト

Python サンプルコード

全般
サンプル

Python Osmosis

IDE

パッケージ管理

setuptools

Windows

上記ページからインストーラをダウンロードして実行(2.7の例)
setuptools-0.6c11.win32-py2.7.exe
Power Shell 3以降
PS C:\WINDOWS\system32> (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | python -
PATHに追加(2.7の例)
C:\Python27\Scripts
実行例
c:\work\python>easy_install virtualenv
プロキシを利用している場合、以下を環境変数に設定

HTTP_PROXY=http://プロキシサーバ:ポート

Windows PIPを利用する

Windows 用 バイナリパッケージ

仮想環境

VirtualEnvを利用してPythonの仮想環境を作成


Python 3以降同梱されている


python3 -m venv ./envs/env01
./env/env01/Scrits/activate


エラー


  • Ubuntu
$ python3 -m venv ./env/env_ml
Failing command: ['/home/piroto/workspaces/python/env/env_ml/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']
  • 対処

Visual Studio Code


  • Visual Studio Codeの場合、Ctrl+Shift+Pで、Python:Select Interpreter を選択することで実行する仮想環境を選択できる。選択するとIDEの左下に表示される。
  • settings.json に以下を追加
{
      "python.pythonPath": "{virtual envで作成したパス}/bin/python3"
}

それ以前

CentOS

Windows

インストール

<blockquote>上記 パッケージ管理 を参照し、easy_install を利用出来るようにしておく</blockquote>

c:\easy_install virtualenv
ワークスペースの作成
c:\work\python>python -m virtualenv env
New python executable in env\Scripts\python.exe
Installing setuptools................done.
Installing pip...................done.
仮想環境の実行
  • Scripts\activate の実行
c:\work\python>cd env\Scripts

c:\work\python\env\Scripts>activate
(env) c:\work\python\env\Scripts>
仮想環境の停止
  • Scripts\deactivate の実行
(env) c:\work\python\env\Scripts>deactivate
Tclライブラリが見つからない
Python VirtualEnvでIDLEを利用する

Ubuntu

インストール
$ sudo apt-get install python-virtualenv

WinPython

フレームワーク

Web

Django

Google App Engine

O/Rマッパー

SQLAlchemy

プラグイン

PyDev

Python ライブラリ

デバッグ

GUI

実践

自然言語処理

  • 自然言語処理
  • Python NLTK(Natural Language Toolkit)
  • Python MeCab(日本語形態素解析)

Tips

文字コード

ファイルの文字コード

URLエンコード

Python UnicodeEncodeError の対処

Python ユニコードエスケープをデコード

Python CSVファイル

書式

文字列展開

 v = "hoge"
 print(f"content:{v}")


文字列を16進数に変換

print 'hoge'.encode('hex')
print '686f6765'.decode('hex')

シフトIN/OUTを変換

title = title.replace(b'\x0e'.decode(),"")
title = title.replace(b'\x0f'.decode(),"")

2進数文字列を10進数に変換

>>> int('10101100',2)
172

IPアドレスを2進数で表示

>>> "{0:08b}.{1:08b}.{2:08b}.{3:08b}".format(172,31,16,0)
'10101100.00011111.00010000.00000000'
  • 戻す
>>> '.'.join([str(int(x,2)) for x in  "10101100.00011111.00010000.00100000".split(".")])
'172.31.16.32'

ログ

サンプル

Python 組合せと順列の計算

Python パスワード生成

Path

Pathの最後の値を得る

*Python3

>>> import pathlib
>>> path = pathlib.PurePath('/a/b/c/d/e')
>>> path.name
'e'

その他

help関数の使い方

プロパティを持っているか

hasattr(インスタンス,プロパティ名)

正規表現による分割

  • re.split を利用
>>> import re
>>> re.split('[ \t\n\.\,]', 'this is\ta\npen.')
['this', 'is', 'a', 'pen', ]

正規表現による置換

  • re.sub(pattern, repl, string, count=0, flags=0) を利用する
>>> s = r'AaBbCc'
>>> re.sub(r'[a-z]',r,s)
'ABC'

ユーザーからの入力を得る

  • raw_input を利用する
number = int(raw_input("please input int:"))

=コマンドパラメータの簡易解析

  • --foo bar を、key(foo) value(barのリスト)に解析
import sys
def make_dict_from_args(args):
    dict = {}
    key = None
    for arg in args:
        if arg.startswith('--'):
            key = arg[2:]
        else:
            val = dict.get(key)
            if not val:
                val = []
            val.append(arg)
            dict[key] = val
    return dict   
if __name__ == "__main__":
  args = make_dict_from_args(sys.argv)

日本語のクエリパラメータ

import urllib
import urllib2
url = r'https://maps.googleapis.com/maps/api/place/nearbysearch/json?%s'
queries = {
    'key':GOOGLE_API_SRVER_KEY,
    'location':'35.1814464,136.906398',
    'radius':'500',
    'keyword':u'まんが喫茶'.encode('utf-8')
}
data = urllib.urlencode(queries)
req = url % data
print req
response = urllib2.urlopen(req)
for l in response:
    print l

文字化け