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

MyMemoWiki

「Python」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
 
(同じ利用者による、間の26版が非表示)
1行目: 1行目:
==Python==
+
| [[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]] | [https://www.typea.info/blog/index.php/category/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]][[[[標準ライブラリ]]|Python 標準ライブラリ概観]][[[[ライブラリ]]]
+
{{amazon|4798163643}}
 +
==[[Python]]==
 +
====インストール====
 +
*[[CentOS6にPython2.7をインストール]]
 +
*[[Django インストール]]
 +
=====Macにインストール=====
 +
----
 +
*Homebrewのインストール
 +
https://brew.sh/
 +
<pre>
 +
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
 +
</pre>
 +
*pyenv のインストール
 +
<pre>
 +
brew install pyenv
 +
</pre>
 +
*~/.bash_profileに追記
 +
<pre>
 +
export PYENV_ROOT="$HOME/.pyenv"
 +
export PATH="$PYENV_ROOT/bin:$PATH"
 +
eval "$(pyenv init -)"
 +
</pre>
  
====インストール====
+
*pythonバージョン確認
*CentOS6にPython2.7をインストール
+
<pre>
*Django インストール
+
$ pyenv install --list | egrep '[ ]+3.*'
 +
</pre>
 +
*pythonインストール
 +
<pre>
 +
$ pyenv install 3.12.6
 +
</pre>
 +
*以下のエラーの場合
 +
<pre>
 +
The Python lzma extension was not compiled. Missing the lzma lib?
 +
</pre>
 +
xzライブラリのインストール
 +
<pre>
 +
brew install xz
 +
</pre>
 +
再インストール
 +
<pre>
 +
$ 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
 +
</pre>
 +
*使用バージョンの設定
 +
<pre>
 +
pyenv versions
 +
$ pyenv global 3.12.6
 +
</pre>
  
====[言語まとめ Python] [言語まとめ]====
+
====[[言語まとめ Python|言語まとめ]]====
*[言語まとめ Python] [言語まとめ]
+
*[[言語まとめ Python|言語まとめ]]
====[Python サンプルコード] [サンプルコード(ファイル、コレクション・・・)]====
+
====[[Python サンプルコード|サンプルコード(ファイル、コレクション・・・)]]====
*[Python サンプルコード] [サンプルコード(ファイル、コレクション・・・)]
+
*[[Python サンプルコード|サンプルコード(ファイル、コレクション・・・)]]
*[Python CookBook] [サンプルコード(CookBook)]
+
*[[Python CookBook|サンプルコード(CookBook)]]
====[Python サンプルコード オブジェクト指向] [サンプルコード(オブジェクト指向)]====
+
====[[Python サンプルコード オブジェクト指向|サンプルコード(オブジェクト指向)]]====
*[Python サンプルコード オブジェクト指向] [サンプルコード(オブジェクト指向)]
+
*[[Python サンプルコード オブジェクト指向|サンプルコード(オブジェクト指向)]]
====[Python 標準ライブラリ概観] [標準ライブラリ概観]====
+
====[[Python 標準ライブラリ概観|標準ライブラリ概観]]====
 
=====詳細=====
 
=====詳細=====
*[Python 標準ライブラリ概観] [標準ライブラリ概観]
+
*[[Python 標準ライブラリ概観|標準ライブラリ概観]]
  
 
=====概要=====
 
=====概要=====
23行目: 69行目:
 
|-
 
|-
 
|OSインターフェース  
 
|OSインターフェース  
|[Python 標準ライブラリ概観] [os]
+
|[[Python 標準ライブラリ概観|os]]
 
|-
 
|-
 
|ファイルのワイルドカード  
 
|ファイルのワイルドカード  
|[Python 標準ライブラリ概観] [glob]
+
|[[Python 標準ライブラリ概観|glob]]
 
|-
 
|-
 
|コマンドライン引数  
 
|コマンドライン引数  
|[Python 標準ライブラリ概観] [sys]
+
|[[Python 標準ライブラリ概観|sys]]
 
|-
 
|-
 
|標準エラーを出力しプログラムを終了  
 
|標準エラーを出力しプログラムを終了  
|[Python 標準ライブラリ概観] [sys]
+
|[[Python 標準ライブラリ概観|sys]]
 
|-
 
|-
 
|正規表現を利用する  
 
|正規表現を利用する  
|[Python 標準ライブラリ概観] [re]
+
|[[Python 標準ライブラリ概観|re]]
 
|-
 
|-
 
|数学  
 
|数学  
|[Python 標準ライブラリ概観] [math]
+
|[[Python 標準ライブラリ概観|math]]
 
|-
 
|-
 
|URL による任意のリソースへのアクセス
 
|URL による任意のリソースへのアクセス
|[Python 標準ライブラリ概観] [urllib]
+
|[[Python 標準ライブラリ概観|urllib]]
 
|-
 
|-
 
|インターネットアクセス  
 
|インターネットアクセス  
|[Python 標準ライブラリ概観] [urllib2]
+
|[[Python 標準ライブラリ概観|urllib2]]
 
|-
 
|-
 
|日付と時刻  
 
|日付と時刻  
|[Python 標準ライブラリ概観] [date、datetime、time]
+
|[[Python 標準ライブラリ概観|date、datetime、time]]
 
|-
 
|-
 
|時間計算  
 
|時間計算  
|[Python 標準ライブラリ概観] [time]
+
|[[Python 標準ライブラリ概観|time]]
 
|-
 
|-
 
|データ圧縮  
 
|データ圧縮  
56行目: 102行目:
 
|-
 
|-
 
|パフォーマンス計測  
 
|パフォーマンス計測  
|[Python 標準ライブラリ概観] [timeit]
+
|[[Python 標準ライブラリ概観|timeit]]
 
|-
 
|-
 
|品質管理  
 
|品質管理  
|[Python 標準ライブラリ概観] [doctest]
+
|[[Python 標準ライブラリ概観|doctest]]
 
|-
 
|-
 
|出力書式
 
|出力書式
|[Python 標準ライブラリ概観] [repr、pprint、textwrap、locale]
+
|[[Python 標準ライブラリ概観|repr、pprint、textwrap、locale]]
 
|-
 
|-
 
|テンプレート
 
|テンプレート
|[Python 標準ライブラリ概観] [Template]
+
|[[Python 標準ライブラリ概観|Template]]
 
|-
 
|-
 
|シリアライズ  
 
|シリアライズ  
|[Python 標準ライブラリ概観] [pickle]
+
|[[Python 標準ライブラリ概観|pickle]]
 
|-
 
|-
 
|バイナリデータレコードレイアウトでの作業  
 
|バイナリデータレコードレイアウトでの作業  
|[Python 標準ライブラリ概観] [struct]
+
|[[Python 標準ライブラリ概観|struct]]
 
|-
 
|-
 
|オブジェクトのコピー  
 
|オブジェクトのコピー  
|[Python 標準ライブラリ概観] [copy]
+
|[[Python 標準ライブラリ概観|copy]]
 
|-
 
|-
 
|マルチスレッド  
 
|マルチスレッド  
|[Python 標準ライブラリ概観] [threading]
+
|[[Python 標準ライブラリ概観|threading]]
 
|-
 
|-
 
|ロギング  
 
|ロギング  
|[Python 標準ライブラリ概観] [logging]
+
|[[Python 標準ライブラリ概観|logging]]
 
|-
 
|-
 
|XML Dom  
 
|XML Dom  
|[Python 標準ライブラリ概観] [xml.dom]
+
|[[Python 標準ライブラリ概観|xml.dom]]
 
|-
 
|-
 
|XML ElementTree  
 
|XML ElementTree  
|[Python 標準ライブラリ概観] [xml.etree]
+
|[[Python 標準ライブラリ概観|xml.etree]]
 
|-
 
|-
 
|データベースの使用  
 
|データベースの使用  
|[Python 標準ライブラリ概観] [sqlite3]
+
|[[Python 標準ライブラリ概観|sqlite3]]
 +
|-
 +
|JSONエンコードとデコード
 +
|[[Python 標準ライブラリ概観|json]]
 
|-
 
|-
 
|}
 
|}
====[Python ビルトインオブジェクト] [ビルトインオブジェクト]====
+
 
*[Python ビルトインオブジェクト] [ビルトインオブジェクト]
+
====[[Python ビルトインオブジェクト|ビルトインオブジェクト]]====
====Python サンプルコード====
+
*[[Python ビルトインオブジェクト|ビルトインオブジェクト]]
 +
====[[Python サンプルコード]]====
 
=====全般=====
 
=====全般=====
*[Python サンプルコード] [サンプルコード(ファイル、コレクション・・・)]
+
*[[Python サンプルコード|サンプルコード(ファイル、コレクション・・・)]]
*[Python サンプルコード オブジェクト指向] [サンプルコード(オブジェクト指向)]
+
*[[Python サンプルコード オブジェクト指向|サンプルコード(オブジェクト指向)]]
*[Python 組込関数] [組込関数]
+
*[[Python 組込関数|組込関数]]
  
 
=====サンプル=====
 
=====サンプル=====
*Python ファイル読み書き
+
*[[Python ファイル読み書き]]
*Python ゼロ埋め
+
*[[Python ゼロ埋め]]
*Python 3項演算子
+
*[[Python 3項演算子]]
*Python 環境変数PATHからファイル検索
+
*[[Python 環境変数PATHからファイル検索]]
*Python ファイルを削除
+
*[[Python ファイルを削除]]
*Python 数値の桁数を得る
+
*[[Python 数値の桁数を得る]]
  
 
====[http://python.secsup.org/ Python Osmosis]====
 
====[http://python.secsup.org/ Python Osmosis]====
*[Python if for] [Episode 6: Flow Control, if and for Statements]
+
*[[Python if for|Episode 6: Flow Control, if and for Statements]]
*[Python Range] [Episode 7: The Range Function]
+
*[[Python Range|Episode 7: The Range Function]]
*[Python Decimal] [Episode 50: Standard Library: Decimal Floating Point Arithmetic]
+
*[[Python Decimal|Episode 50: Standard Library: Decimal Floating Point Arithmetic]]
 +
 
 
==IDE==
 
==IDE==
*Python IDEにて矢印キーでヒストリー表示
+
*[[Python IDEにて矢印キーでヒストリー表示]]
*Python IDEをCentOSで利用する
+
*[[Python IDEをCentOSで利用する]]
 
==パッケージ管理==
 
==パッケージ管理==
 
===setuptools===
 
===setuptools===
 
*http://peak.telecommunity.com/DevCenter/setuptools
 
*http://peak.telecommunity.com/DevCenter/setuptools
 
*https://pypi.python.org/pypi/setuptools
 
*https://pypi.python.org/pypi/setuptools
*CentOS6にPython2.7をインストール
+
*[[CentOS6にPython2.7をインストール]]
  
====Windows====
+
====[[Windows]]====
 
=====上記ページからインストーラをダウンロードして実行(2.7の例)=====
 
=====上記ページからインストーラをダウンロードして実行(2.7の例)=====
 
  setuptools-0.6c11.win32-py2.7.exe
 
  setuptools-0.6c11.win32-py2.7.exe
 
=====Power Shell 3以降=====
 
=====Power Shell 3以降=====
  PS C:\WINDOWS\system32&gt; (Invoke-WebRequest https://bootstrap.pypa.io/ez_setup.py).Content | python -
+
  PS C:\WINDOWS\system32&gt; (Invoke-Web[[R]]equest https://bootstrap.pypa.io/ez_setup.py).Content | python -
  
 
=====PATHに追加(2.7の例)=====
 
=====PATHに追加(2.7の例)=====
  C:\Python27\Scripts
+
  C:\[[Python]]27\Scripts
 
=====実行例=====
 
=====実行例=====
  c:\work\python&gt;easy_install virtualenv
+
  c:\work\python&gt;easy_install [[vi]]rtualenv
 
=====プロキシを利用している場合、以下を環境変数に設定=====
 
=====プロキシを利用している場合、以下を環境変数に設定=====
HTTP_PROXY=http://プロキシサーバ:ポート
+
[[HTTP]]_PROXY=http://プロキシサーバ:ポート
  
====Windows PIPを利用する====
+
====[[Windows]] PIPを利用する====
 
*[http://www.pip-installer.org/en/latest/ PIP]
 
*[http://www.pip-installer.org/en/latest/ PIP]
*Python WindowsにPIPをインストール
+
*[[Python WindowsにPIPをインストール]]
 
*[http://www.lfd.uci.edu/~gohlke/pythonlibs Unofficial Windows Binaries for Python Extension Packages]
 
*[http://www.lfd.uci.edu/~gohlke/pythonlibs Unofficial Windows Binaries for Python Extension Packages]
  
====Windows 用 バイナリパッケージ====
+
====[[Windows]] 用 バイナリパッケージ====
 
*http://www.lfd.uci.edu/~gohlke/pythonlibs/
 
*http://www.lfd.uci.edu/~gohlke/pythonlibs/
 
*[http://typea.info/blg/glob/2015/09/windows-virtualenv-python27-pip-wheel-scipywindows.html Windows で VirtualEnv の Python2.7 に pip と wheel を使って コンパイルエラーが発生するパッケージ(例 scipy)をWindows用バイナリ提供サイトから入手してインストールする]
 
*[http://typea.info/blg/glob/2015/09/windows-virtualenv-python27-pip-wheel-scipywindows.html Windows で VirtualEnv の Python2.7 に pip と wheel を使って コンパイルエラーが発生するパッケージ(例 scipy)をWindows用バイナリ提供サイトから入手してインストールする]
 
==仮想環境==
 
==仮想環境==
===VirtualEnvを利用してPythonの仮想環境を作成===
+
===VirtualEnvを利用して[[Python]]の仮想環境を作成===
===Python 3以降同梱されている===
+
----
 +
 
 +
===[[Python]] 3以降同梱されている===
 +
----
 
*https://docs.python.jp/3/library/venv.html
 
*https://docs.python.jp/3/library/venv.html
  python3 -m venv /path/to/new/virtual/environment
+
  python3 -m venv ./envs/env01
 +
 
 +
./env/env01/Scrits/activate
 +
 
 +
 
 +
 
 +
====エラー====
 +
----
 +
*Ubuntu
 +
<pre>
 +
$ python3 -m venv ./env/env_ml
 +
Failing command: ['/home/piroto/workspaces/python/env/env_ml/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']
 +
</pre>
 +
*対処
 +
<pre>
 +
 
 +
</pre>
 +
 
 +
===[[Visual Studio Code]]===
 +
----
 +
*[[Visual Studio Code]]の場合、Ctrl+Shift+Pで、Python:Select Interpreter を選択することで実行する仮想環境を選択できる。選択するとIDEの左下に表示される。
 +
*settings.json に以下を追加
 +
<pre>
 +
{
 +
      "python.pythonPath": "{virtual envで作成したパス}/bin/python3"
 +
}
 +
</pre>
  
 
===それ以前===
 
===それ以前===
====CentOS====
+
====[[CentOS]]====
 
*[http://typea.info/blg/glob/2015/01/aws-elastic-beanstalk-django-centos65-pydev1-django.html Virtualenv のインストールと起動]
 
*[http://typea.info/blg/glob/2015/01/aws-elastic-beanstalk-django-centos65-pydev1-django.html Virtualenv のインストールと起動]
====Windows====
+
====[[Windows]]====
 
=====インストール=====
 
=====インストール=====
 
&lt;blockquote&gt;上記 パッケージ管理 を参照し、easy_install を利用出来るようにしておく&lt;/blockquote&gt;
 
&lt;blockquote&gt;上記 パッケージ管理 を参照し、easy_install を利用出来るようにしておく&lt;/blockquote&gt;
  c:\easy_install virtualenv
+
  c:\easy_install [[vi]]rtualenv
 
=====ワークスペースの作成=====
 
=====ワークスペースの作成=====
  c:\work\python&gt;python -m virtualenv env
+
  c:\work\python&gt;python -m [[vi]]rtualenv env
 
  New python executable in env\Scripts\python.exe
 
  New python executable in env\Scripts\python.exe
 
  Installing setuptools................done.
 
  Installing setuptools................done.
171行目: 251行目:
  
 
=====Tclライブラリが見つからない=====
 
=====Tclライブラリが見つからない=====
*http://typea.info/blg/glob/2015/07/python-windows-virtualenv-tcl.html
+
*http://typea.info/blg/glob/2015/07/python-windows-[[vi]]rtualenv-tcl.html
  
=====Python VirtualEnvでIDLEを利用する=====
+
=====[[Python]] VirtualEnvでIDLEを利用する=====
*http://typea.info/blg/glob/2015/09/python-virtualenvidle.html
+
*http://typea.info/blg/glob/2015/09/python-[[vi]]rtualen[[vi]]dle.html
  
====Ubuntu====
+
====[[Ubuntu]]====
 
=====インストール=====
 
=====インストール=====
  $ sudo apt-get install python-virtualenv
+
  $ sudo apt-get install python-[[vi]]rtualenv
===WinPython===
+
===[[WinPython]]===
*WinPython
+
*[[WinPython]]
 
==フレームワーク==
 
==フレームワーク==
 
===Web===
 
===Web===
====Django====
+
====[[Django]]====
*Django
+
*[[Django]]
====Google App Engine====
+
====[[Google App Engine]]====
*Google App Engine
+
*[[Google App Engine]]
  
===O/Rマッパー===
+
===O/[[R]]マッパー===
====SQLAlchemy====
+
====[[SQLAlchemy]]====
*SQLAlchemy
+
*[[SQLAlchemy]]
 
*[http://omake.accense.com/static/doc-ja/sqlalchemy/ SQLAlchemy 0.6.5 ドキュメント (和訳)]
 
*[http://omake.accense.com/static/doc-ja/sqlalchemy/ SQLAlchemy 0.6.5 ドキュメント (和訳)]
===プラグイン===
+
===[[プラグイン]]===
====PyDev====
+
====[[PyDev]]====
*PyDev Eclipseプラグイン
+
*PyDev [[Eclipse]]プラグイン
==Python ライブラリ==
+
==[[Python ライブラリ]]==
*Python ライブラリ
+
*[[Python ライブラリ]]
  
 
===デバッグ===
 
===デバッグ===
202行目: 282行目:
  
 
===GUI===
 
===GUI===
*PyQt
+
*[[PyQt]]
 
==実践==
 
==実践==
===自然言語処理===
+
===[[自然言語処理]]===
*自然言語処理
+
*[[自然言語処理]]
 
*Python NLTK(Natural Language Toolkit)
 
*Python NLTK(Natural Language Toolkit)
 
*Python MeCab(日本語形態素解析)
 
*Python MeCab(日本語形態素解析)
  
==Tips==
+
==[[Tips]]==
===文字コード===
+
===[[文字コード]]===
====[Python ファイルの文字コード] [ファイルの文字コード]====
+
====[[Python ファイルの文字コード|ファイルの文字コード]]====
====[Python URLエンコード] [URLエンコード]====
+
====[[Python URLエンコード|URLエンコード]]====
====Python UnicodeEncodeError の対処====
+
====[[Python UnicodeEncodeError の対処]]====
====Python ユニコードエスケープをデコード====
+
====[[Python ユニコードエスケープをデコード]]====
====Python CSVファイル====
+
====[[Python CSVファイル]]====
 
===書式===
 
===書式===
 +
 +
====文字列展開====
 +
*https://qiita.com/takechiyosw/items/27942ab481370fea604f
 +
*f-string
 +
  v = "hoge"
 +
  print(f"content:{v}")
 +
 +
 
====文字列を16進数に変換====
 
====文字列を16進数に変換====
 
  print 'hoge'.encode('hex')
 
  print 'hoge'.encode('hex')
 
  print '686f6765'.decode('hex')
 
  print '686f6765'.decode('hex')
 +
 +
====シフトIN/OUTを変換====
 +
title = title.replace(b'\x0e'.decode(),"")
 +
title = title.replace(b'\x0f'.decode(),"")
 +
 
====2進数文字列を10進数に変換====
 
====2進数文字列を10進数に変換====
 
  &gt;&gt;&gt; int('10101100',2)
 
  &gt;&gt;&gt; int('10101100',2)
229行目: 322行目:
 
  &gt;&gt;&gt; '.'.join([str(int(x,2)) for x in  "10101100.00011111.00010000.00100000".split(".")])
 
  &gt;&gt;&gt; '.'.join([str(int(x,2)) for x in  "10101100.00011111.00010000.00100000".split(".")])
 
  '172.31.16.32'
 
  '172.31.16.32'
 +
 
===ログ===
 
===ログ===
*Python 任意のファイルにログを出力する
+
*[[Python 任意のファイルにログを出力する]]
 
===サンプル===
 
===サンプル===
====Python 組合せと順列の計算====
+
====[[Python 組合せと順列の計算]]====
====Python パスワード生成====
+
====[[Python パスワード生成]]====
===その他===
+
===Path===
====[Python help関数の使い方] [help関数の使い方]====
+
====Pathの最後の値を得る====
*Python help関数の使い方
+
*Python3
 +
<pre>
 +
>>> import pathlib
 +
>>> path = pathlib.PurePath('/a/b/c/d/e')
 +
>>> path.name
 +
'e'
 +
</pre>
 +
===[[その他]]===
 +
====[[Python help関数の使い方|help関数の使い方]]====
 +
*[[Python help関数の使い方]]
 
====プロパティを持っているか====
 
====プロパティを持っているか====
 
  hasattr(インスタンス,プロパティ名)
 
  hasattr(インスタンス,プロパティ名)
  
====正規表現による分割====
+
====[[正規表現]]による分割====
 
*re.split を利用
 
*re.split を利用
 
  &gt;&gt;&gt; import re
 
  &gt;&gt;&gt; import re
246行目: 349行目:
 
  ['this', 'is', 'a', 'pen', '']
 
  ['this', 'is', 'a', 'pen', '']
  
====正規表現による置換====
+
====[[正規表現]]による置換====
 
*re.sub(pattern, repl, string, count=0, flags=0) を利用する
 
*re.sub(pattern, repl, string, count=0, flags=0) を利用する
 
  &gt;&gt;&gt; s = r'AaBbCc'
 
  &gt;&gt;&gt; s = r'AaBbCc'
254行目: 357行目:
 
*raw_input を利用する
 
*raw_input を利用する
 
  number = int(raw_input("please input int:"))
 
  number = int(raw_input("please input int:"))
 +
=====コマンドパラメータの簡易解析====
 +
* --foo bar を、key(foo) value(barのリスト)に解析
 +
<pre>
 +
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)
 +
</pre>
  
 
===日本語のクエリパラメータ===
 
===日本語のクエリパラメータ===
260行目: 383行目:
 
  url = r'https://maps.googleapis.com/maps/api/place/nearbysearch/json?%s'
 
  url = r'https://maps.googleapis.com/maps/api/place/nearbysearch/json?%s'
 
  queries = {
 
  queries = {
     'key':GOOGLE_API_SRVER_KEY,
+
     'key':GOOGLE_API_S[[R]]VE[[R]]_KEY,
 
     'location':'35.1814464,136.906398',
 
     'location':'35.1814464,136.906398',
 
     'radius':'500',
 
     'radius':'500',
272行目: 395行目:
 
     print l
 
     print l
  
===文字化け===
+
===[[文字化け]]===
*Python 対話シェルへユニコードを文字として表示する
+
*[[Python 対話シェルへユニコードを文字として表示する]]
*PyScripter 日本語ファイルエラーの対応
+
*[[PyScripter 日本語ファイルエラーの対応]]
*Python URLエンコード
+
*[[Python URLエンコード]]
*Python UnicodeEncodeError の対処
+
*[[Python UnicodeEncodeError の対処]]
*Python ファイルの文字コード
+
*[[Python ファイルの文字コード]]
*Python ユニコードエスケープをデコード
+
*[[Python ユニコードエスケープをデコード]]
*Python 対話シェルへユニコードを文字として表示する
+
*[[Python 対話シェルへユニコードを文字として表示する]]
 +
 
 +
[[category:プログラミング言語]]

2024年9月17日 (火) 08:14時点における最新版

| 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
  • ~/.bash_profileに追記
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
  • 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
  • 使用バージョンの設定
 pyenv versions
$ pyenv global 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

文字化け