SlideShare a Scribd company logo
http://www.globalwalkers.co.jp/
Global Walkers, inc.
【 GWゼミ #0 】
Pythonの基礎について
Global Walkers 杉野
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Pythonでプログラムを書きたい!
このセクションの目的
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Pythonの基礎に入る前に
「スクリプトが書ける」ということへのニーズとは?
■ 作業する時に、ちょっとした便利機能を作ることができる
3
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Pythonを勉強したいけど
■ 公式ドキュメントを見ても、何をどこから見ていいやら・・・
■ チュートリアルに沿って進んでいると、とっても時間がかかる・・・
■ なかなか、目的に到達しない・・・
4
http://www.globalwalkers.co.jp/
Global Walkers, inc.
やる気を高めよう!
5
【 Python チュートリアルより抜粋 】
コンピュータを使って様々な作業をしていたら、自動化したい作業が出てくるでしょう。たとえば、たくさんのテキストファイルで検索-置換操作を行いたい、
大量の写真ファイルを込み入ったやりかたでリネームまたは整理したいといったものです。ひょっとすると、小さなカスタムデータベースや、何かに特化した
GUIアプリケーション、シンプルなゲームを作りたいかもしれません。
もしあなたがプロのソフト開発者なら、C/C++/Java ライブラリを扱う必要があって、通常の write/compile/test/re-compile サイクルが遅すぎると感じるかもしれ
ません。ひょっとするとそのようなライブラリのテストスイートを書いていて、テスト用のコードを書くのにうんざりしているかもしれません。拡張言語を使え
るプログラムを書いていて、アプリケーションのために新しい言語一式の設計と実装をしたくないと思っているかもしれません。
Pythonはそんなあなたのための言語です。
http://www.globalwalkers.co.jp/
Global Walkers, inc.
今回の目的
■ 「書いてみる」事の敷居を下げる
■ 調べるときのインデックスや引き出しを作る!
6
Pythonの言語仕様を全て話すわけではありません!
言語仕様なんて暗記するものでもありません!
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Pythonとは?
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Pythonとは
■ インタプリタ型のスクリプト言語
■ オブジェクト指向言語
■ 科学演算や機械学習で利用可能なライブラリが多数用意されている
■ Pythonで作られているもの
Google App Engine, YouTube, DropBox, etc…
8
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Python Version には 2系と3系があるけど
■ 今回の講習では python 3系で進みますが・・・
→ 公式ドキュメントでは、2系の方がライブラリサポートが多いと書いてある
→ やりたいことに即して調べてからバージョンを決めましょう・・・
■ Python3で何が変わったの?
9
printが関数に
dict の keys, items, valuesメソッドはイテレート可能なオブジェクトを返す
文字列の標準の方がUnicode型に統一
etc …
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Python を書いてみよう
■ 実際のコードを見ながら、キーポイントをピックアップしていきます
■ 「Python を書ける人」と思われるための初歩
http://www.globalwalkers.co.jp/
Global Walkers, inc.
テーマ
■ file_list.pyというスクリプトを作って
指定したディレクトリの中に格納されている
ファイル名をターミナルに表示してみよう
11
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Update 1
■ まずは
→ コマンドラインの第一引数を取る
→ ディレクトリ内のファイル名を取得してみる
12
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Update 1
13
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Update 1: 詳細
14
globモジュールのglob関数に検索したいディレクトリ名を渡すと、
その配下にあるファイルの一覧がリスト(厳密にはイテレータ)で返されます。
コマンド引数の値は、sysモジュールのargvというリストに格納されています。
リストの何番目の値を参照するかは、[ index番号 ] でアクセスします。
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Pythonの特徴
■ 型宣言がない!
→ pythonでは、型は自動判定してくれます(動的型付け)
■ { } がない!
→ pythonでは、ステートメントブロックはインデントで表現されます
■ “ ; ”もいらない!
→ pythonでは、1行1ステートメントが基本です
15
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Update 1:実行結果
16
あれ? dir_2, dir_3 の下にあるファイルは出てこないんだ・・・
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Update 2
17
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Update 2:詳細
18
os.path モジュールを使って、
検索されたパスがファイルもしくはディレクトリなのか判定し、
ディレクトリならば、その配下のファイルを検索するようにしてみました。
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Pythonの特徴
■ if文やfor文に { } がない!
→ pythonでは、ステートメントブロックはインデントで表現されます
19
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Update 2:実行結果
20
とは言え、最下層のディレクトリはまだ検索できていませんね・・・そりゃ、そうだ・・・
階層が違うだけでやることは、同じことの繰り返し。
関数化して再帰的に処理してエレガントにいきたいなー・・・
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Update 3
21
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Update 3:詳細
22
ディレクトリの時には再度同じ関数をよぶ再帰呼出しにして
階層が深くなっても同様に動作するように変えてみました。
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Pythonの特徴
■ 関数は以下のように宣言する
23
def 関数名( 引数 ):
ステートメントブロック
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Update 3:実行結果
24
よし、全部キレイにファイル名取れたし、表示できたな。
しかしファイル名を置換したりできるように使いまわせるようにしたいなー
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Update 4
25
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Update 4:詳細
26
「ファイルを検索する」という処理と、
「ファイル名を表示する」という処理を分けてみました。
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Pythonの特徴
■ Iterator は yield を使って表現する
27
yield とは・・・
簡単に言うと関数の処理を一旦とめて、呼び出し元に値を返します
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Update 4:実行結果
28
よし、全部キレイにファイル名取れたままで問題なしと。
しかし、ファイルについての情報を何かの処理で参照したくなるかもなー
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Update 5
29
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Update 5:詳細
30
ファイルの情報を記憶するための
FileInfomationというクラスを作ってみました。
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Pythonの特徴
■ classは以下のように宣言する
■ 初期化関数は以下のように宣言する(特殊メソッドのオーバーロード)
■ クラス内でinstanceアクセスは self
31
class クラス名( 親クラス ):
class クラス名( 親クラス ):
def __init__( self, 引数 ):
ステートメントブロック
■ ガベージコレクションはどうなっている?
■ クラス内の関数宣言でのスコープは?
クラスに対して関数宣言をする場合には第一引数には必ず self がいる!
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Update 5:実行結果
32
よし、実行結果変わらず、問題なしと・・・
もうちょっと、知ったかぶってみようかな・・・
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Update 6
33
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Update 6:詳細
34
objectの特殊メソッドで文字列表現用のメソッドがあったのでオーバーロードしてみました
手続き型処理部分に __name__ == ‘__main__’ なる条件をつけてみました
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Pythonの特徴
■ 手続き処理部分には if __name__ == ‘__main__’ をつけよう
35
作成したスクリプトファイルを実行した際には、
トップレベルのコード名として、モジュール属性である __name__ に ‘__main__’ という名前が入る
複数ファイルで実装するときに使えるテクニック
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Update 6:実行結果
36
よし、実行結果変わらず、問題なしと・・・
まぁ、これならコード見られても恥ずかしくないかな・・・
http://www.globalwalkers.co.jp/
Global Walkers, inc.
OpenCV
■ PythonでOpenCVを使うために
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Python + OpenCV
38
http://www.globalwalkers.co.jp/
Global Walkers, inc.
Appendix
■ Script Text Data
http://www.globalwalkers.co.jp/
Global Walkers, inc.
#!/usr/bin/env python
import sys, os, glob
class FileInfomation( object ):
def __init__( self, fname ):
self.fname = fname
def __str__( self ):
return "[file]: %s" % self.fname
def each_file( dir ):
for fname in glob.glob( "%s/*" % dir ):
if os.path.isfile( fname ):
yield FileInfomation( fname )
if os.path.isdir( fname ):
for finfo in each_file( fname ):
yield finfo
raise StopIteration
flie_list.py
40
if __name__ == '__main__':
target_dir = sys.argv[1]
for finfo in each_file( target_dir ):
print( finfo )
http://www.globalwalkers.co.jp/
Global Walkers, inc.
#!/usr/bin/env python
import sys, cv2
import numpy as np
def create_window( img, wname, x, y ):
cv2.namedWindow( wname )
cv2.moveWindow( wname, x, y )
cv2.imshow( wname, img )
def show_image( fname, target_func ):
mimg = cv2.imread( fname, cv2.IMREAD_UNCHANGED )
oimg = target_func( mimg )
height, width = mimg.shape[:2]
create_window( mimg, fname, 50, 50 )
create_window( oimg, 'after convert', width + 50, 50 )
cv2.waitKey( 0 )
cv2.destroyAllWindows()
def simple_view( img ):
return img
def gray_scale( img ):
gray_img = cv2.cvtColor( img, cv2.COLOR_RGB2GRAY )
_, threshold_img = cv2.threshold( gray_img, 60, 255, cv2.THRESH_BINARY )
return cv2.cvtColor( threshold_img, cv2.COLOR_GRAY2RGB )
opencv_sample.py
41
if __name__ == '__main__':
show_image( sys.argv[1],
# (lambda img: simple_view(img) )
(lambda img: gray_scale(img) )
)

More Related Content

What's hot (20)

PPTX
Pythonの環境導入 2014年春季版
Katsuhiro Morishita
 
PDF
Pythonを取り巻く開発環境 #pyconjp
Yoshifumi Yamaguchi
 
PDF
scikit-learnを用いた機械学習チュートリアル
敦志 金谷
 
PDF
第1回python勉強会
Yoshio Shimomura
 
PDF
サードパーティパッケージの歩き方
Takesxi Sximada
 
PPTX
Python札幌201406
Shinya Okano
 
PDF
BPStudy#54 そろそろPython3
Atsushi Odagiri
 
PPTX
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
Katsuhiro Morishita
 
PDF
パッケージングの今と未来
Atsushi Odagiri
 
PPTX
Python エンジニアの作り方 2011.08 #pyconjp
Takeshi Komiya
 
PPTX
Pythonスタートアップ勉強会201109 python入門
Takayuki Shimizukawa
 
PDF
Python & PyConJP 2014 Report
gree_tech
 
PDF
なぜ科学計算にはPythonか?
Aki Ariga
 
PDF
次世代言語 Python による PyPy を使った次世代の処理系開発
shoma h
 
POTX
素振りのススメ at Python入門者の集い
Takayuki Shimizukawa
 
PDF
WindowsでPython
drillan
 
PDF
Python × Herokuで作る 雑談slack bot
dcubeio
 
PDF
Pyconjp2016 pyftplib
Shinya Okano
 
PDF
スクレイピングとPython
Hironori Sekine
 
PPTX
Stapy#17LT
drillan
 
Pythonの環境導入 2014年春季版
Katsuhiro Morishita
 
Pythonを取り巻く開発環境 #pyconjp
Yoshifumi Yamaguchi
 
scikit-learnを用いた機械学習チュートリアル
敦志 金谷
 
第1回python勉強会
Yoshio Shimomura
 
サードパーティパッケージの歩き方
Takesxi Sximada
 
Python札幌201406
Shinya Okano
 
BPStudy#54 そろそろPython3
Atsushi Odagiri
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
Katsuhiro Morishita
 
パッケージングの今と未来
Atsushi Odagiri
 
Python エンジニアの作り方 2011.08 #pyconjp
Takeshi Komiya
 
Pythonスタートアップ勉強会201109 python入門
Takayuki Shimizukawa
 
Python & PyConJP 2014 Report
gree_tech
 
なぜ科学計算にはPythonか?
Aki Ariga
 
次世代言語 Python による PyPy を使った次世代の処理系開発
shoma h
 
素振りのススメ at Python入門者の集い
Takayuki Shimizukawa
 
WindowsでPython
drillan
 
Python × Herokuで作る 雑談slack bot
dcubeio
 
Pyconjp2016 pyftplib
Shinya Okano
 
スクレイピングとPython
Hironori Sekine
 
Stapy#17LT
drillan
 

Similar to 勉強会 Cvml python基礎 (20)

KEY
ひのきのぼうだけで全クリ目指す
AromaBlack
 
KEY
Hello World Python featuring GAE
Maito Kuwahara
 
PDF
はじめてのPython
Katsumi Honda
 
PPTX
Wacode5thでのpython講義資料
丈 宮本
 
PPTX
2017/12/21 虎の穴 Python勉強会
虎の穴 開発室
 
PDF
OSS Study#19_LT
NaoY-2501
 
PPTX
(python)勉強会のすすめ
Kioto Hirahara
 
PDF
Introduction to Numpy (and Python) [JPN]
MasaruOinaga
 
PDF
Introduction Pycon2010
(shibao)芝尾 (kouichiro)幸一郎
 
PDF
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Satoshi imai
 
PDF
LLdeade Python Language Update
Atsushi Shibata
 
PDF
PyPy 紹介
shoma h
 
PPT
Pythonintro
Mikio Kubo
 
PDF
Pythonで始めるDropboxAPI
Daisuke Igarashi
 
PDF
Lisp tutorial for Pythonista : Day 2
Ransui Iso
 
PDF
DATUM STUDIO PyCon2016 Turorial
Tatsuya Tojima
 
PDF
Lisp tutorial for Pythonista : Day 1
Ransui Iso
 
PPTX
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
Katsuhiro Morishita
 
PDF
おまえらこのライブラリ使ってないの? m9 (2013-07)
Toru Furukawa
 
ODP
Introduction of Python
Tomoya Nakayama
 
ひのきのぼうだけで全クリ目指す
AromaBlack
 
Hello World Python featuring GAE
Maito Kuwahara
 
はじめてのPython
Katsumi Honda
 
Wacode5thでのpython講義資料
丈 宮本
 
2017/12/21 虎の穴 Python勉強会
虎の穴 開発室
 
OSS Study#19_LT
NaoY-2501
 
(python)勉強会のすすめ
Kioto Hirahara
 
Introduction to Numpy (and Python) [JPN]
MasaruOinaga
 
Introduction Pycon2010
(shibao)芝尾 (kouichiro)幸一郎
 
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Satoshi imai
 
LLdeade Python Language Update
Atsushi Shibata
 
PyPy 紹介
shoma h
 
Pythonintro
Mikio Kubo
 
Pythonで始めるDropboxAPI
Daisuke Igarashi
 
Lisp tutorial for Pythonista : Day 2
Ransui Iso
 
DATUM STUDIO PyCon2016 Turorial
Tatsuya Tojima
 
Lisp tutorial for Pythonista : Day 1
Ransui Iso
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
Katsuhiro Morishita
 
おまえらこのライブラリ使ってないの? m9 (2013-07)
Toru Furukawa
 
Introduction of Python
Tomoya Nakayama
 
Ad

Recently uploaded (11)

PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
 
PDF
第3回デジタル理学療法学会のシンポジウム「デジタル理学療法の組織活用:教育・管理・研究を繋ぐ新たな地平」での話題提供
Matsushita Laboratory
 
PPTX
オープンソース界隈の利用者や技術者から見たオープンソースEDAとは? What is open source EDA from the perspecti...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
 
PDF
漁船に搭載されている電子装備と漁法について_VRC海洋学研究会_海のLT会発表資料
Yuuitirou528 default
 
PDF
go tool と Minimal Version Selection アルゴリズム
Keisuke Ishigami
 
PPTX
新卒・中途採用者向け採用ピッチ資料2025年7月版(20250702).pptx
Official74
 
PDF
AIツールを使った研究の効率化 Improving Research Efficiency with AI Tools
Tohoku University
 
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
 
PDF
2023年版Web3技術の理想と現実
Syuhei Hiya
 
PDF
第3回デジタル理学療法研究会学術大会シンポジウム「デジタル理学療法の組織活用:教育・管理・研究を繋ぐ新たな地平」の講演資料.
Matsushita Laboratory
 
PDF
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
 
第3回デジタル理学療法学会のシンポジウム「デジタル理学療法の組織活用:教育・管理・研究を繋ぐ新たな地平」での話題提供
Matsushita Laboratory
 
オープンソース界隈の利用者や技術者から見たオープンソースEDAとは? What is open source EDA from the perspecti...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
 
漁船に搭載されている電子装備と漁法について_VRC海洋学研究会_海のLT会発表資料
Yuuitirou528 default
 
go tool と Minimal Version Selection アルゴリズム
Keisuke Ishigami
 
新卒・中途採用者向け採用ピッチ資料2025年7月版(20250702).pptx
Official74
 
AIツールを使った研究の効率化 Improving Research Efficiency with AI Tools
Tohoku University
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
 
2023年版Web3技術の理想と現実
Syuhei Hiya
 
第3回デジタル理学療法研究会学術大会シンポジウム「デジタル理学療法の組織活用:教育・管理・研究を繋ぐ新たな地平」の講演資料.
Matsushita Laboratory
 
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
 
Ad

勉強会 Cvml python基礎