見出し画像

Python入門書

※最新のpython記事はブログで公開中です。
https://genchan.net

※技術Wikiサイト公開中です。
https://engineers-life.com/

この記事ではPythonプログラミングの初め方からインストール、プログラミングの基礎知識、仮想化、Webサイト作成までを記載しています。

プログラミングの設定例も記載していますので、初めての方でも簡単なプログラミングができるように説明も含めていますので抵抗はないです。

参考書が高いと思う方は、簡単なPythonの基礎知識を得ることができます。

今後も、随時本記事に追加・更新を行って行くので、参考資料がわりに利用してください。

はじめに

このPython入門書はこれからプログラミングを始める方、ネットワークエンジニア、サーバーエンジニアでプログラミングの知識を得たい方向けに作成しています。

Pythonはインフラ周辺で使用されている言語であり、仮想化が普及してきた近年においては、ネットワークエンジニアに必要とされるプログラミング言語となっています。
もちろん企業もこのPythonを求めている企業が増えています。

プログラミングとしては、入りやすい言語で人気も高く、これからプログラミングを始める方にはお勧めの言語となります。


プログラミング言語「Python」とは

Pythonはプログラミング言語の中でも比較的簡単な言語として設計されています。海外では、プログラミングを初めて学ぶときには、この「Python」が推薦されるほど人気の言語となるほどです。

シンプルな言語ですが、多種多様な開発用とに使える便利な言語で、以下のような様々な環境で利用されています。

・組み込み開発
・Webアプリケーション
・コンピューター上で動作するデスクトップアプリケーション
・科学技術計算
・機械学習など

最近では、人口知能(AI)の分野でもこのPythonが使用されるケースが増えており、人気の高いプログラミング言語となります。

さらに、ネットワーク、サーバー関連、仮想化でもこのPythonを利用する環境が増え、これからSEでも利用が増えるプログラミング言語となります。


Pythonを始める前に「テキストエディタ」をインストール

Pythonでプログラムをする上で必須となるのが「テキストエディタ」です。
特にPythonのプログラムを書くことに特化したテキストエディタとしておすすめするのが「Atom」です。

Atomは「GitHub」が公開している無料のテキストエディタで、簡単にダウンロードをインストールをすることが可能です。
Atomのダウンロードとインストール方法を、Windows、Mac、Linux系(CentOS)それぞれの方法を以下から参考にしてください。


テキストエディタ「Atom」インストール(Windows)

以下のURLへアクセスし、Atomのホームページを表示します。

ATOM公式ページ

・1.「Download」をクリックし、ファイルをダウンロード。ダウンロードが完了したらファイルをクリックし、「実行」します。

画像3


・2.ファイルを実行すると自動的にインストールが開始ます。

画像4


・3.自動インストールが完了すると、Atomが自動的に起動します。

画像1


・4.デスクトップ上にも「Atom」のアイコンが作成されます。

画像2

【Python】をでプログラミングするおすすめエディタ「Atom」インストール(MacOS)

「Atom」のファイルダウンロードをするため、以下のURLへアクセスし、Atomのホームページを表示します。

Atom公式ページ

・1.Macの端末でホームページにアクセスすると、自動でMacOS版のAtomのバージョンとダウンロードが表示されるので「Download」をクリックします。

画像5


・2.インストーラーのダウンロード保存先のフォルダを指定し、保存をクリックします。

画像6


・3.保存先のフォルダにzipファイルが保存されているのでクリックします。zipファイルをクリックするとファイルが展開されます。

画像7


・4.同じフォルダに「Atom」が展開されるので、アイコンをアプリケーションにドラッグ&ドロップします。

画像8


・5.Dockで表示された「Atom」のアイコンをクリックするとテキストエディタが立ち上がります。

画像9

画像10

テキストエディタ「Atom」を日本語化する方法とおすすめパッケージ

・Atomを起動し、「file」 > 「setting」をクリックします。
・日本語パッケージを検索するため、「Install」をクリックし、
・「japanese-menu」を入力 > 「packages」をクリックします。
・パッケージの「japanese-menu」が表示されるので、「Install」をクリックします。
・パッケージをインストールするとメニューが自動で日本語化されます。

また、Atomでは以下のパッケージが便利なのでインストールをオススメします。

・autocomplete-python:プログラムの内容を自動的に保管するパッケージ
・linter-python:プログラム作成時の間違いを指摘するパッケージ
・minimap:プログラム全体のプレビューを表示するパッケージ


「Python」インストール方法

Pythonは公式サイトより配布されているインストーラーを使用してインストールを実施します。

https://www.python.org/downloads/

Pythonのサイトで、Windows用のダウンロードページにが表示されるので「Download Python」をクリックし、ダウンロードが完了するとインストーラーを立ち上げてインストールするだけです。


「Python」起動方法(Windows)

Windowsで「Python」を起動する場合はコマンドプロンプトを起動時実行します。
以下が起動手順です。

① デスクトップ左下にある「Windowsマーク」をクリックし、「コマンドプロンプト」を起動します。
もしくは、キーボードで「ctrl+R」を押し、検索のポップアップが表示されるので「cmd」と入力し、Enterを押します。

② 以下のように「コマンドプロンプト」が立ち上がるので、「python」もしくは「py.exe」と入力し、Enterを押すとPythonが起動します。
C:\>python
Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:21:23) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>


Python起動方法(Mac)

Pythonのインストールが完了したら実際にMacで起動をします。
起動は以下の手順で「ターミナル」を立ち上げます。

① Finderを起動して「アプリケーション」をクリック
② 「ユーティリティ」をクリック
③ 「ターミナル」をダブルクリック

「ターミナル」が起動すると以下のような画面が表示されます。
MacではデフォルトでPythonがインストールされているため、バージョン3で起動する際は「Python3」を入力します。

~ $ python3
Python 3.8.0 (v3.8.0:fa919fdf25, Oct 14 2019, 10:23:27) 
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> 


簡単なプログラムを実行する

Pythonで対話モードで簡単なプログラムを叩いてみます。
通常の計算式で答えを算出

>>> 1 + 1
2
>>> 

「a」が10という数値
「b」が20という数値に置き換えて、答えを出力

>>> a = 10
>>> b = 20
>>> print(a + b)
30

対話モードを終了するには、以下のコマンドを入力することにより、終了することができます。

>>>
>>> quit()
$


変数

プログラミングを学ぶ上で必ず必要となるのが、「変数」です。
変数を利用することで、同じ値を複数の行にまたがり利用できるようになります。

変数を使うメリットは同じ値を複数の行にまたがり利用できることです。
また、別のやり方で言うと、商品を買う際に値段を変更するときに、膨大なプログラムで行数がある場合はその大量のプログラムの中で、商品の値段が何度も使われていたら、全ての値段の修正・変更をするのは大変です。

そこで、プログラムの世界では1つの値に対し、名前を付けてその名前を書くだけで、値を使えるようになる仕組みとして「変数」が使われます。

以下のように「ringo」と言う変数を使うことにより、数値を変更する際に何箇所も変更せず、変数「ringo」の値だけを変更するだけですみます。

※ hensu.py

 #りんご1つの値段 
ringo = 100 #りんご1つの値段を表示 
print(ringo) #りんご3つを買った時の消費税10 %を追加した値段
print((ringo * 3) * 1.1)

※出力結果

$ python3 hensu.py 
100
330.0

変数に記憶することを代入と言います。

変数の仕組みを利用して数値に名前を付けます。
名前をつかるときは、等号の左側に名前、右側に名前を付けたい値を設定します。

ringo = 100

変数に代入された値を利用することを「参照」と言います。
参照の設定の仕方は以下の通りとなります。

※ hensu.py

 #りんご一つの値段 
ringo = 100 #りんご3つを買った時の消費税10 %を追加した値段
total = (ringo * 3) * 1.1 #合計 
print(total)

※ 出力結果

$ python3 hensu.py 
330.0


数値計算

通常プログラムで計算するには「式」が必要となります。
式は、学校でも習う足し算や引き算、など数と演算子の組み合わせとなります。

演算子とは「+」、「-」などの記号のことをいいます。
プログラミングでは、全ての計算方法を演算子で指定します。

演算子	        計算の例	                演算子の意味
a + b	        1 + 23	        足し算

a – b	        321	        引き算

a * b	        1 * 22	        掛け算

a / b	        10 / 42.5	        割り算

a // b	        10 // 4 → 2	        割り算の結果から小数点以下を切り捨てる

a % b	        10 % 42	        aをbで割った余り

a ** b	        2 ** 38	        aのb乗

以下では実際に、PCでPythonを動かして、演算子を使って計算式を入力します。
ターミナルを立ち上げ、「Python」と入力し、対話モードにします。
「>>>」というプロンプトが表示されます。

$ Python3
Python 3.8.0 (v3.8.0:fa919fdf25, Oct 14 2019, 10:23:27) 
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> 

「1 + 2 + 3」と入力し、「Enter」を押すと「6」という結果が表示されます。

>>> 1 + 2 + 3

以下は、掛け算が優先で計算された出力結果です。

>>> 2 + 3 * 5

カッコを使って計算することで、計算する優先順位が変わり、出力結果が変わります。

>>> (2 + 3) * 5


データの型

データには「型」があります。
整数など小数点のない数値は「int型」と呼ばれています。

Pythonではこのほかにも以下のような方があります。

・小数点を含む実数「float型」
・文字列を表す「str型」
・真偽値を表す「bool型」

いかにそれぞれの「型」の違いを表にしたので、参考にしてください。

型	                    表示例	            意味
int型(整数型)	            1 100 −50	            小数点なしの整数

float型(浮動小数点方)	    1.5 −0.6 3.1415	    小数点を含む数値

str型	                    ‘林檎’ ’apple’ “150”	    文字列 「’」か「”」で囲む

bool型(真偽値型)	            True False	            正しいor正しくない

input()関数で標準入力から入力されたデータは全て文字列型(str)となります。
そのため、足し算や引き算などの計算をしたい場合は、数値(int)型へ変換する必要があります。

このようにある型を別の方に変換することを「型変換」といいます。
型変換をする場合は、型変換の関数の()ないに変換したい値を入れます。

※「test_str_test_int.py」と言うファイルを作成

test_str = '100'
test_int = int(test_str)
number = (test_int + 50) * 2
print(number)


※ 実行結果

$ python3 test_str_test_int.py 
300


以下では「input_str_int.py」と言うファイルを作成し、input()関数を利用してキーボード入力した文字列を「int型」=整数へ変換し計算させます。

※ input_str_int.py

test_str = input('数字を入力: ')
test_int = int(test_str)
number = (test_int + 50) * 2
print(number)

※ 実行結果

$ python3 input_str_int.py 
数字を入力: 50
200
$


プログラミングを書く際は、int型、float型などの数値とstr型の文字列型をしっかりと把握して実行するようにしましょう。


リスト

Pythonでは、数値や文字列など複数あるデータをまとめて格納することができます。
これを「リスト型(list)」と言います。

書き方は、以下のように複数データを角カッコ([ ])で囲み、カンマ(,)で区切るだけです。
また、リストも、数値や文字列と同じように変数へ代入することができます。

month_list = [‘1月’, ‘2月’, ‘3月’, ‘4月’, ‘5月’, ‘6月’]
month_list = ['1月', '2月', '3月', '4月', '5月', '6月']
month_name = month_list[4]
print('選んだ月は', month_name, 'です。')
選んだ月は 5月 です。


Pythonでは、すでに作成されたリストに対して、後からデータを追加したり、削除したりする機能があります。
この機能は「メソッド」と言われています。

以下ではそれぞれのメソッドを使ったプログラムを紹介します。

append()メソッド

month_list = ['1月', '2月', '3月', '4月', '5月', '6月']
month_list.append('7月')
print(month_list)

出力結果

$ python3 month-list.py 
['1月', '2月', '3月', '4月', '5月', '6月', '7月']


remove()メソッド

month_list = ['1月', '2月', '3月', '4月', '5月', '6月']
month_list.remove('3月')
print(month_list)

出力結果

$ python3 month-list.py 
['1月', '2月', '4月', '5月', '6月']


タプル

「タプル」は不変なデータをリスト化する際に使用します。
不変なデータとは、プログラム実行中にリストのデータの値が変わることがないデータと言う意味となります。

Pythonでは、不変なデータを扱うために、「タプル」が存在します。

「タプル」と「リスト」の違い
上記でも簡単に説明しましたが、リストとの大きな違いは以下となります。

・リストは作成した後で、値の追加や削除が可能
・タプルはプログラム実行中に変更することができない
・タプルを変更するには、プログラムないのタプルを定義している部分を書き換えるしかない
・リストは角カッコ[]、タプルは円カッコ()で囲む

タプルの構文は以下のようになります。

test_tuple = (‘1月’, ‘2月’, ‘3月’, ‘4月’, ‘5月’)

タプルはリストと同じくデータの参照の考え方は同じです。
違いといえば円カッコ()で囲むだけです。後は、データをカンマ区切りで入力する点は変わりません。

ただし、注意するべきところは、データの「定義」は円カッコ()を使いますが、データの参照はリストと同じく角カッコ[]を使うので間違いないようにしましょう。

タプルの参照

onth_tuple = ('1月', '2月', '3月', '4月', '5月', '6月')
>>> month_name = month_tuple[4]
>>> print(month_name)
5


タプルは書き換えができません。

>>> month_tuple = ('1月', '2月', '3月', '4月', '5月', '6月')
>>> month_tuple[4] = '7月'
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>


辞書

辞書とは、一般的に言うと、国語辞典や英和辞典などの言葉や物事の意味がたくさん描かれた書物となります。
Pythonでは同じように「キー」と「データ」を紐づけるための「辞書型(dict型)」と言うデータ型があります。

辞書の定義例は以下となります。

test_dict = {
   '001' : 'dictionary1',
   '002' : 'dictionary2',
   '003' : 'dictionary3',
}
 
id = test_dict['001']
print('辞書番号は{}です。'.format(id))

実行結果

$ python3 test_dict00.py 
辞書番号はdictionary1です。


for文

Pythonのプログラミングの中で、同じことを繰り返す処理があります。
以下ではfor文を使った繰り返し処理となります。

※ for_test_2.py

number_list = [100, 200, 300]
for number in number_list:
   print('数値は', number, 'です。')
print('繰り返し終了')

実行結果

$ python3 for_test_2.py 

数値は 100 です。
数値は 200 です。
数値は 300 です。
繰り返し終了
$

上記を踏まえて【for文】テストの平均点を出力するプログラムを作成します。


以下では「for文」を使ったテストの平均点を出力するプログラムを作成します。

まずは、「test_for.py」と言うファイルを作成します。
プログラムは以下となります。

test_list = [65, 86, 98, 77, 75]        
total = 0                      
for test in test_list:
   total = total + test            
number_of_subjects = len(test_list)     
average = total / number_of_subjects      
print('合計点は{},平均点は{}です。'.format(total, average))
上記、プログラムの内容は以下となります。

・リストを作成
・合計点数を計算するため、0を代入して初期化
・test変数で点数を足していく
・len()関数により、「test_list」の値の個数を取得 ※ここでは「5」つ
合計点を全体の個数で割り、平均点を出す
・合計点と、平均点の結果を出力

実行結果

$ python3 「test_for.py
合計点は401,平均点は80.2です。


if文

for文と同じくプログラムを作成するに当たり、条件によって処理を変えていく際に使用するのが「条件分岐」です。

if文を使った条件分岐の処理では、Pythonでは条件分岐をする場合「if文」を利用します。

この「if文」の使い方ですが、ifの後ろに半角スペースを一つ空け条件となる式を書きます。
インデントされている行が分岐後の処理となります。

以下のように、左から、「ifキーワード」、「式」を下記、最後に「:」コロンでif文の構文を作成します。

if test_point >= 90:
   実行したい処理

また、複数の条件で分岐させたい時は「elif」、「else」を使用します。
それ俺の利用用途は以下となります。

・elif :条件を付け加える時に使用
・else :「if」や「elif」でつけた条件のどれにも当てはまらない時の処理
if test_point >= 90:
   実行したい処理①
elif test_point >= 75:
   実行したい処理②
else:上記の条件どれにも当てはまらないときの処理

また、if文の処理は、上から順番に処理されます。

どれか一つの条件に当て嵌まった時点でそのブロック内の処理が実行され、どれにも当てはまらない場合、elseの処理をします。

「if文」を使用した、テストの結果から評価を出力するプログラム


ここでは、if文を使った応用のプログラムを作ります。
よく使われるプログラムで、テストの結果プログラムを作成します。

以下では、それぞれの点数をみて、「good」、「pass」、「fail」で評価するプログラムとなります。
まずは、ファイルを作成し、テスト用の結果データを準備します。

今回は複数の入力ができるように、split()メソッドを利用して、リスト化をします。


また、len()関数により、「point_list」の値の個数を取得します。
これにより、リストにいくつの値が入力されたかを出力し、「good」と「success」で割合の計算をします。

例)
score * 100 * 0.9
↓ 30, 50, 90 と3つの値を入力した場合
3 * 100 * 0.9


次に評価するための条件を以下で書いていきます。
条件分岐は以下となります。

・合計点が9割以上 → 「good」
・合計点が7割以上 → 「success」
・それ以外(以下) → 「fail」

最後にprint()関数で結果を表示します。

test_point = input('点数をカンマ区切りで入力: ')
point_list = test_point.split(',')
total = 0
for point in point_list:
   total += int(point)
score = len(point_list)
good = score * 100 * 0.9
success = score * 100 * 0.7
if total >= good:
   evaluation = 'good'
elif total >= success:
   evaluation = 'sccess'
else:
   evaluation = 'fail'
print('点数の評価は{}です。'.format(evaluation))

出力結果

$ python3 if_test.py 
点数をカンマ区切りで入力: 50,50,60
点数の評価はfailです。
$ python3 if_test.py 
点数をカンマ区切りで入力: 90,90,90
点数の評価はgoodです。
$ python3 if_test.py 
点数をカンマ区切りで入力: 80,80,80
点数の評価はsccessです。


関数

関数はある特定の処理をひとまとめにしたものとなります。

print()関数では数値や文字を表現することができます。
Pythonプログラム上で、文字を表示する場合は、シングルクォーテーション「’」、またはダブルクォーテーション「”」で囲みます。
数値と文字は以下のように区別して記述します。

数値

>>> print(1 + 2)
3
>>>


文字列

>>> print('1 + 2')
1 + 2
>>> print("1 + 2")
1 + 2
>>> 


print()関数をメッセージを追加する際は以下のように、「’」で文字列を囲うことで出力結果に表示されます。

>>> test_str = input('数字を入力: ')
>>> test_int = int(test_str)
>>> number = (test_int + 50) * 2
>>> print('合計の答えは', number, 'です。')
合計の答えは 360 です。
>>>


また、プログラムを書く上で、他者がプログラムを読む人のために、コメントを入力することができます。

Pythonでは「#」を文頭に書くことによって、そこで書かれた内容は全てコメントとして「プログラムは無視」されます。
プログラムの内容で動作がわかりにくい箇所には注釈としてコメントを記述すると便利です。

※以下はプログラムの例となります。

 #文字を入力 
test_str = input('数字を入力: ') #文字を値に変更する 
test_int = int(test_str) #変数に50を足したあと 、2をかける
number = (test_int + 50) * 2 #上記計算の答えを出力 
print('合計の答えは', number, 'です。')
合計の答えは 360 です。


print()関数で複数の文字列を表示使用しようとする際、文字列の間に半角スペースが入ります。
そこで、半角スペースなしで文字列を連結する「format()メソッド」を使うと表示がきれいになります。

format()メソッドは文字列で作られた雛形(テンプレート)に、任意の値を差し込んで文字列を生成します。

name = 'げんひろき' 
age = '25' 
text_template = '名前は{}です。年齢は{}です。' 
text = text_template.format(name, age) 
print(text)
名前はげんひろきです。年齢は25です。

format()メソッドを使用することによってprint()関数の出力結果でスペースの区切りがなくなり、文字列がきれいに表示されます。

この他にも関数は多くありますが、代表的な関数を紹介します。

range()関数では、0から指定した数値の一つ手前までを返すプログラムとなります。

for number in range(10):
   print(number)

実行結果

0
1
2
3
4
5
6
7
8
9


「1」の開始から「100」の一つ手前までを返すプログラム

for number in range(1, 100):
   print(number)

実行結果

0
1
2
3
4
5
.
.
.
96
97
98
99


enumerate()関数はインデックス番号の要素を同時に取得した繰り返しのプログラムとなります。

for number, color in enumerate(['Red', 'Blue', 'Green']):
   print('No.{} is {}'.format(number, color))

実行結果

No.0 is Red
No.1 is Blue
No.2 is Green


クラス

クラスは効率よくプログラムを作成していくための仕組みであり、「データ」と「処理」をまとめる仕組みとなっています。
クラスを利用した簡単なプログラムは以下のようになります。

クラスを定義
インスタンスを作成
データ属性・メソッドを利用

class(クラス)の書き方ですが、クラスは変数や関数などをまとめて記述します。
これを「クラスの定義」と言います。

ベースとなる書き方は以下となります。

class クラス名:
   def メソッド名(self, 引数リスト):
       self.変数 = ...
       ...
       return

・class クラス名: → クラスを定義
・def メソッド名 → 処理を表す関数(メソッド)
・self.変数 → データを表す変数(データ属性)


pythonではデータ属性とメソッドをまとめて、「属性」と呼びます。

以下では2つのデータ属性を用意し、メソッドを定義しています。

class Person:
   def getname(self):
       return self.name
   def getage(self):
       return self.age


上記では2つのデータ属性作成しています。

・人の名前のデータ属性「name」
・年齢のデータ属性「age」


さらに2つのメソッドを定義しています。

・名前を調べる「getname()メソッド」
・年齢を調べる「getage()メソッド」


クラスにはデータ属性とメソッドを記述することを覚えておきましょう。

上記でクラスの定義は完了したので、このクラスを利用するには「インスタンスを作成する」処理を実施します。

インスタンスは「クラス名()」と言う指定で作成し、インスタンスを表す変数(インスタンス名)に代入します。

インスタンス名 = クラス名()


この書き方により、以下のようにインスタンスの作成します。

pr = Person()

「py」はインスタンス名となります。
これにより、変数「pr」がpersonクラスのインスタンスを表すことになります。

このインスタンスによりPersonクラスのデータ属性、メソッドを利用できるようになります。


インスタンスを設定したら、クラスからデータ属性、メソッドを利用します。
これらを利用するには「.(ピリオド)」を使用します。

属性を利用する書き方は以下となります。

インスタンス名.データ属性名
インスタンス名.メソッド名(引数リスト)


今回のPersonクラスで、以下のコードで、インスタンスのデータ属性に値を代入し、メソッドを呼び出します。

pr.name = '小林'
......
pr.getname()


この書き方により、Personデータ属性である「name」に名前を代入したり、getname()メソッドを使って名前を調べたりすることができるようになります。


以下では、クラスの定義からインスタンスの作成の一連のプログラムを書いています。


※ class00.pyというファイルを作成

class Person:
   def getname(self):
       return self.name
 
   def getage(self):
       return self.age
 
pr = Person()
pr.name = '小林'
pr.age = 18
 
name = pr.getname()
age = pr.getage()
 
print(name,'さんは', age, '歳です。')


実行結果

$ python class00.py 
小林 さんは 18 歳です。

上記のようにプログラムから一人の人の情報が出力されました。
クラスからインスタンスを作成することで、まとめた情報を扱うことができます。

クラスは以下のような流れになるので頭に入れておきましょう。

①クラスを定義
②インスタンスを作成
③データ属性・メソッドを利用

複雑になってきますが、定義を覚えれば色々と活用ができます。


パッケージとモジュール

プログラミングをする上で、コマンドが増えて行数も増えていくと、1ファイル自体が非常に長くなり、メンテナンスをする際も困難になってしまいます。

そのような時に、Pythonでは機能ごとにファイルを分割する仕組みがあります。
Pythonでは、1つのファイルに書かれているプログラムを「モジュール」と言います。

このモジュールを「import(インポート)」という機能を使うと他のモジュールの関数を読み込んで実行ができます。
これにより、複数のファイルを分割してプログラムを実行することができます。


importを利用したモジュールの実行をします。
別ファイルとして「module01.py」を作成します。

def add(a, b):
   return a + b
 
def sub(a, b):
   return a - b

import文を使用してファイルを分割したプログラム「import-test.py」を作成します。

※ import-test.py

import module01
 
sum = module01.add(10, 5)
dif = module01.sub(20, 15)
print(sum, dif)

上記プログラム実行時の表示は以下となります。

実行結果

$ python3 import-test.py 
15 5
$ 


次は関数を利用し、モジュール名を使用せずにプログラムを実行する方法を以下で紹介します。

インポートしたモジュールを使用する場合、毎回、上記のようにモジュール名を使用して関数を指定するのも面倒と感じる方もいます。
このような場合は以下のように「from」キーワードを使用した関数を直接インポートします。

fromを使用し、importした関数は以下のようにモジュール名がなくても実行できます。
実行結果は同じですが、プログラムの書き方がシンプルになるところがメリットです。

from module01 import add, sub
sum = add(10, 5)
dif = sub(20, 15)
print(sum, dif)


実行結果

$ python3 import-test.py 
15 5
$

  モジュールは複雑なプログラムをシンプルにするのに大きく役に立ちますので、利用していきましょう。


ファイルの読み書き

プログラミングでは大量のデータを扱う場合、別ファイルにデータを読み書きすることなどが求められます。
ファイルを開いたり、データを読み書きすることができたり、ファイル内のデータを利用したプログラミングを実行することも可能です。

ファイルを読み込む処理
プログラムにおいて、ファイル内のデータを読み込むには、ファイルを開く動作をプログラムから実施します。

Pythonではopen()関数でファイルを開きます。
プログラムにおいて、ファイル内のデータを読み込むには、ファイルを開く動作をプログラムから実施します。

Pythonではopen()関数でファイルを開きます。
ファイルに関数の戻り値を変数に代入しておき、そのメソッドでファイルを操作します。

read_file = open('test.txt')

ファイルを開いた後はメソッドでファイルを操作します。
上記でopen()関数でファイルを開いた後、これからファイル内のデータを読み込みます。

ファイル内のデータを読み込むには、read()メソッドを使用します。

ファイルを使い終わった後は、プログラムから開いたファイルを閉じる必要があります。
この時、ファイルをopen()したら、必ずclose()をしましょう。

この開閉の動作は重要です。
コンピューターがファイルを同時に開くことができる数には上限があります。

ファイルを閉じることをしない場合は、ファイルが開けなくなる不具合が発生する場合があります。

※ ファイルの中身を読み込むread()メソッド

data = read_file.read()


上記では読み込んだデータを入れる変数「data」に、read()メソッドでファイル内のデータを読み込みます。

ファイルを閉じるclose()メソッド

read_file.close()


以下ではデータを書き込んだファイルを読み込むプログラムを作成します。
まずはプログラムで読み込む対象のファイルを作成します。

ファイルの中身は名前と3教科の点数を作成します。
さらに名前と点数をカンマ区切りで入力します。

※ test.txt

Kobayashi, 90, 100, 95
Tanaka, 87, 96, 76
Sato, 69, 97, 86

※ open.py

read_file = open('test.txt')
data = read_file.read()
read_file.close()
print(data)


※実行結果

$ python3 open00.py 
Kobayashi, 90, 100, 95
Tanaka, 87, 96, 76
Sato, 69, 97, 86



次はファイルの書き込みとなります。
プログラムの実行結果をファイルに書き込む一連の動作は、ファイルを読み込む動作とは異なります。

ファイルに対して、読み込むのか書き込むのかは以下のモードを利用します。

・読み込み用にファイルを開く:「読み込みモード」
・書き込み用にファイルを開く:「書き込みモード」


ファイルを書き込みモードで開く場合は、「open()関数」で2番目の引数にモードを指定します。

今回はファイルに書き込むので、「w」(Writeの頭文字)を指定するとファイルを書き込みモードで開きます。

file = open('test.txt', 'w')
・file = 変数
・open = open関数
・test.txt = 読み込むファイル名
・‘w’ = 書き込みモードを指定


ファイルの書き込みモードには以下の2つの特徴があります。

・ファイルが存在しない場合は新規でファイルを作成
・ファイルが存在する場合は上書き保存、もしくは追記

open(‘test.txt’, ‘w’)を実行した際、open()関数はファイルが存在しない場合、新規に「test.txt」ファイルを作成し、書き込みモードで開きます。

「test.txt」がすでに存在する場合は、open()関数はファイルの中身をすべて削除し上書きをしますので注意しましょう。

ちなみに現在あるファイルのデータに追記する場合は ’a’ を使用します。


以下では「test.py」というファイルを作成し、以下のようにファイルにデータを書き込むプログラムを作成します。

※test.py

・file = open('test.txt', 'w')
・file.write('test Hello!')
・file.close()

プログラムの動作は以下となります。


・open関数で書き込みモードを開く
・file.writeでデータを書き込み
・file.close()でファイルを閉じる

※ 実行結果

>python test.py
>type test.txt
test Hello!
>


「type test.txt」コマンドでファイルの中身を表示します。
ファイルが作成され、中身にデータが書き込まれたことが確認できます。

次にファイルの上書きを実行します。
以下では同じファイルに対して書き込むデータを「test rewirte!」に変更し、上書きされることを確認しています。

file = open('test.txt', 'w')
file.write('test rewrite!')
file.close()


実行結果

>type test.txt
test Hello!
>python test.py
>type test.txt
test rewrite!
>


「test Hello!」が「test rewrite!」と上書きされています。

次は、複数データの書き込みとなります。
プログラムで複数のデータを書き込みたい場合は以下のように何度かwrite()メソッドを呼び出し、複数データを書き込みます。

file = open('test.txt', 'w')
file.write('test Hello!')
file.write('test Python!')
file.close()


実行結果
プログラムを実行して、中身をみると、1行に、書き込まれたデータが表示されます。

>python test.py
>type test.txt
test Hello!test Python!
>


次は、「複数行」データの書き込みとなります。
上記では複数データを書き込んでも1行でデータが表示されます。
データの間を改行したい場合は「改行コード」を書き込む必要があります。

Pythonでは「\n」と書くことで改行されます。
Windowsでは「¥」キー、MacOSでは「option」+「¥」キーを押します

file = open('test.txt', 'w')
file.write('test Hello!\n')
file.write('test Python!\n')
file.close()

実行結果

>type test.txt
test Hello!
test Python!
>


Webページ作成

PythonでWebページを作成するのであれば、Python製のWebフレームワークが必要になります。

Webフレームワークは数多くありますが、Webページを初めて作る方におすすめは軽量のフレームワーク「Bottle」です。

さらにフレームワークとしての構造がわかりやすく、自身でWebフレームワークを作成する教材としても利用できます。

以下ではBottleがて今日する主な4つの機能となります。

【Bottle】が提供する主な機能
名前	        説明
ルーティング	ユーザーから要求されたURLを処理し、プログラムを対応付ける
テンプレート	Webページ(HTML)に値を挿入する機能
ユーティリティ	リクエストやレスポンスから情報を取得し、設定するための機能
開発サーバ	開発用の内臓Webサーバ

ただし、注意するところはBottleが提供しない機能もあります。
Bottleはシンプルなフレームワークのため、大規模なWebアプリケーションを作成するための機能は提供されていません。

それでは以下で実際に仮想環境でwebページを表示するまでの手順を説明します。


①仮想環境を作成する
Webアプリケーション用の仮想環境を作成します。
以下では「webtest」というフォルダを作成し、そのフォルダ内で仮想環境を作成する手順となります。

手順は以下

※ Windows

mkdir webtestpython -m venv envenv¥Scripts¥activate.bat

※ Mac

① $ cd Desktop/
② $ mkdir web
③ $ cd web/
④ $ python3 -m venv env


以下でenv仮想環境が有効になったことを確認します。
プロンプトの頭に(env)があればOKです。

web $ source env/bin/activate
(env) web $ 


②Bottleをインストールする
上記で仮想環境を作成したら、Bottleをインストールします。
コマンドは以下のコマンドを使用してBottleをインストールします。

pip install bottle
$ pip install bottle
Collecting bottle
 Using cached https://files.pythonhosted.org/packages/69/d1/efdd0a5584169cdf791d726264089ce5d96846a8978c44ac6e13ae234327/bottle-0.12.17-py3-none-any.whl
Installing collected packages: bottle
Successfully installed bottle-0.12.17
WARNING: You are using pip version 19.2.3, however version 19.3.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
(env) web $ 

※Macはバージョン3でインストールする場合は以下のコマンドを実施

$ pip3 install bottle

ちなみに、Bottleをインストールした後に、pipのアップグレードの注意書き(WARNING)が表示された場合、以下のコマンドでpipのバージョンアップもしておきましょう。

python -m pip install –upgrade pip


③プログラムを作成する
次に、テキストエディタで「Hello World!」という文字列を表示するWebアプリケーションプログラムを作成します。

まずはテキストエディタを開きファイルを作成します。
ここでは「webtest.py」

テキストの作成は以下となります。

※webtest.py

from bottele import route, running   ①


@route('/hello')    ②
def hello():
   return 'Hello World!'    ③

run(host='localhost', port=5555, debug=True)    ④

以下でそれぞれのコードの説明をします。

① 必要なモジュールをインポートする
② URLを指定する
 ※ここでは(http://localhost/hello)にアクセスしたときに返事を返すようにする
③ このURLにアクセスしたときに「hello World!」という文字列でレスポンスを返す
④ 開発サーバを起動



④開発用Webサーバを起動する
以下のようにコマンドプロンプトで「python webtest.py」を実行します。
すると、Bottleフレームワークの開発用Webサーバが起動します。
※終了するときは「ctrl + C」を押します。

仮想環境起動

※ Windows

C:\> env¥Scripts¥activate.bat
(env)C:\>

※ Mac

web $ source env/bin/activate
(env) web $


Webサーバ起動
Webブラウザを開き(ここではgoolge chrome)、URLに以下を入力します。

http://localhost:5555/hello

これで以下のようにブラウザ上に「hello World!」と表示されれば成功です。
※ちなみにURLの「localhost」は自分自身のPCのことを差します。「5555」はポート番号です。

画像11

Webアプリケーションの初歩の流れとなります。


今後はそのほかの機能、ツールを随時更新していきます。
最新の情報は以下ブログでも更新していますので参考にしてください。

https://genchan.net/python-introduction/


この記事が気に入ったらサポートをしてみませんか?