Python

Python はオープンソースのスクリプト言語です。

Python

目次

  1. インストール
    1. Windows
    2. Linux
  2. コマンド
    1. pip
    2. python3
      1. オプション
  3. 演算子
    1. 算術演算子
      1. +
      2. -
      3. *
      4. /
      5. //
    2. 関係演算子
      1. ==
      2. !=
      3. >
      4. <
      5. >=
      6. <=
    3. 論理演算子
      1. and
      2. or
      3. not
    4. ビット演算子
      1. <<
      2. >>
      3. &
      4. |
      5. ^
  4. ステートメント
    1. for
    2. if
    3. while
    4. with
    5. import
  5. リテラル
    1. 0b
    2. 0o
    3. 0x
  6. 文字列
    1. リテラル
      1. 'string'
      2. "string"
      3. '''string'''
      4. """string"""
    2. 特殊文字
      1. \\
      2. \'
      3. \"
    3. 文字列の結合
      1. 結合演算子
      2. .join()
    4. str.split()
  7. コメント
    1. # comment
  8. 定数
  9. 関数
    1. list()
    2. open()
    3. print()
    4. range()
  10. モジュール
    1. datetime
      1. datetime.now()
    2. FTP
    3. os
      1. os.walk()
    4. re
      1. モジュールのインポート
      2. 正規表現のリテラル
      3. 特殊文字
        1. ^
        2. $
        3. *
        4. +
        5. ?
        6. {m}
        7. {m,n}
        8. []
        9. A | B
        10. ()
        11. \d
        12. \D
        13. \s
        14. \S
        15. \w
        16. \W
      4. 関数
        1. re.match()
        2. re.search()
    5. requests
    6. sys
      1. sys.argv
  11. API
    1. EDINET
スッキリわかるPython入門
独習Python
最短距離でゼロからしっかり学ぶ
Python入門

WindowsにPythonをインストールする

PythonはPython Software Foundationの公式ウェブサイト(www.python.org)から入手する。

  1. Python Software Foundationの公式ウェブサイトからインストーラ(python-3.x.x.exe)をダウンロードする。
  2. ダウンロードしたインストーラを実行する。

Ubuntu/Linux Mint に Python をインストールする

Ubuntu または Linux Mint には、あらかじめ Python がインストールされている。もし何らかの理由で Python をインストールするには、apt コマンドを実行する。

$ sudo apt install python3

python3

Pythonのプログラムを実行するには、コマンドを逐次入力・実行する対話モードと、プログラムのソースコードをファイルに保存したものを実行する2通りの方法がある。

Pythonを対話モードで実行するには、まずPythonを起動する。 Pythonを起動すると、「>>>」という記号が表示される。これは、コマンドの入力を促す記号(プロンプト)である。ここでコマンドを入力してEnterキーを押すと、即座に実行される。

>>> print("Hello, world!")
Hello, world!
>>>

Pythonの構文規則にはインデント(字下げ)の決まりがあり、不要なところでインデントを行うと、エラーになる。たとえば、コマンドの前に空白やタブを入力するとエラーになる。

>>> print("Hello, world!")
Hello, world!
>>>     print("Hello, world!")
File "<stdin>", line 1
  print("Hello, world!")
  ^
IndentationError: unexpected indent
>>>

Pythonは電卓としても使用できる。コマンドプロンプトに数式を入力すると、計算結果が表示される。

>>> 1+2
3
>>> 3-4
-1
>>> 5*6
30
>>> 7/8
0.875
>>>

オプション

python3 コマンドには、以下に示すオプションを指定できる。

-m module-name
指定されたモジュールを sys.path で検索し、対応する .py ファイルをスクリプトとして実行する。
$ python -m pip install requests
-h
ヘルプを表示して、コマンドを終了する。(POSIXオプション)
$ python3 -h
-?
ヘルプを表示して、コマンドを終了する。(POSIXオプション)
$ python3 -?
--help
ヘルプを表示して、コマンドを終了する。(GNUオプション)
$ python3 --help
--version
バージョンを表示して、コマンドを終了する。
$ python3 --version
Python 3.10.12

Pythonの演算子

算術演算子

Python には、以下に示す算術演算子がある。

Pythonの算術演算子
演算子 説明
+ 加算
- 減算
* 乗算
/ 除算
// 除算(小数点以下切り捨て)

+

Python の算術合演算子 + は、数値を加算する演算子である。

$ python3
>>> 1 + 2
3

-

Python の算術合演算子 - は、数値を減算する演算子である。

$ python3
>>> 3 - 2
1

*

Python の算術合演算子 * は、数値を乗算する演算子である。

$ python3
>>> 2 * 3
6

/

Python の算術合演算子 / は、数値を除算する演算子である。

$ python3
>>> 5 / 2
2.5

//

Python の算術合演算子 // は、数値を除算(小数点以下切り捨て)する演算子である。

$ python3
>>> 5 // 2
2

関係演算子

Pythonの関係演算子
演算子説明
==等しい
!=等しくない
>大きい
<小さい
>=大きいか等しい
<=小さいか等しい

論理演算子

Pythonの論理演算子
演算子説明
and論理積
or論理和
not否定

ビット演算子

Python には、以下に示すビット演算子がある。

Pythonのビット演算子
演算子説明
>>右ビットシフト
<<左ビットシフト
&ビット論理積
|ビット論理和
^ビット排他的論理和

Python で対話的にビット演算を行う例を以下に示す。

$ python3
>>> 8 >> 1
4
>>> 8 >> 2
2
>>> 8 << 1
16
>>> 8 << 2
32

配列

Pythonで配列を作るには、次のようにする。

a = [0, 1, 2]

Pythonでは配列に異なる型のデータを入れることができる。

a = [1, 2, 'foo', 'bar']

list()関数を使って配列を作ることもできる。

a = list((0, 1, 2))

rangeオブジェクトから配列を作ることもできる。

a = range(10)

文字列

リテラル

Python において文字列リテラルは以下のように表現する。

'string'

$ python3
>>> print('foo')
foo

"string"

$ python3
>>> print("foo")
foo

'''string'''

$ python3
>>> print('''foo''')
foo

"""string"""

$ python3
>>> print("""foo""")
foo

特殊文字

Python の文字列リテラルにおいて、特殊文字は以下のように表現する。

特殊文字
特殊文字 意味 備考
\\ \
\' ' シングルクォートの中で使う
\" " ダブルクォートの中で使う

\\

文字列リテラルでバックスラッシュを表す場合、特殊文字「\\」で表す。

$ python3
>>> print('foo\\bar')
foo\bar

\'

文字列リテラルをシングルクォートで表す場合、その文字列内でシングルクォートは特殊文字「\'」で表す。ダブルクォートの中でシングルクォートを表す場合、特殊文字を使う必要はない。

$ python3
>>> print('foo\'bar')
foo'bar
>>> print("foo'bar")
foo'bar

\"

文字列リテラルをダブルクォートで表す場合、その文字列内でダブルクォートは特殊文字「\"」で表す。シングルクォートの中でダブルクォートを表す場合、特殊文字を使う必要はない。

$ python3
>>> print("foo\"bar")
foo"bar
>>> print('foo"bar')
foo"bar

文字列の結合

結合演算子

Python の結合演算子 + は、文字列と文字列を結合する演算子である。

$ python3
>>> print('foo' + 'bar' + 'baz')
foobarbaz

str.join()

文字列を結合するには、str.join() メソッドを使う。

separater.join(iterable)
separater
各要素を結合するときの区切り文字を指定する。
$ python3
>>> '-'.join(['foo', 'bar', 'baz'])
'foo-bar-baz'
iterable
結合する文字列を以下に示す形式で指定する。

結合する各文字列を配列で指定する例を次に示す。

$ python3
>>> ''.join(['foo', 'bar', 'baz'])
'foobarbaz'

結合する各文字列を tuple で指定する例を次に示す。

$ python3
>>> ''.join(('foo', 'bar', 'baz'))
'foobarbaz'

結合する各文字列を dict で指定する例を次に示す。

$ python3
>>> ''.join({'foo': 1, 'bar': 2, 'baz': 3})
'foobarbaz'

str.split()

空白で区切られた文字列を分割してリストにするには、split メソッドを使う。

s = "foo bar baz"
print(s.split())

引数で区切り文字を指定することもできる。

s = "foo bar baz"
print(s.split(','))

コメント

Pythonでは # から行末まではコメント(注釈)となる。コメントはスクリプトの実行に影響を与えない。

print(i) # 表示

他のプログラミング言語によくある複数行コメントはPythonには無い。

定数

他のプログラミング言語では、変数とは別に定数の定義方法が提供されている。Python では定数の定義方法が提供されていないため、変数と同様の方法で定数を定義する。なお、Python では定数名を大文字で定義するのが慣例として定着している。

DEFINE_MAX = 10
XML_DECLARATION = '<?xml version="1.0" encoding="UTF-8"?>'

ただの変数であるため、値を変更することを防ぐことはできない。

for

Pythonで繰返し処理を行うには、for 文を使う。

for counter in range(5):
  print(counter)

配列

配列の要素ごとに処理を繰り返すスクリプトの例を以下に示す。

for item in ['foo', 'bar', 'baz']:
    print(item)

上記のスクリプトを実行した例を以下に示す。

$ pyhon3 example.py
foo
bar
baz

tuple

tumple の要素ごとに処理を繰り返すスクリプトの例を以下に示す。

for item in (1, 2, 3):
    print(item)

上記のスクリプトを実行した例を以下に示す。

$ pyhon3 example.py
1
2
3

dict

dict の要素ごとに処理を繰り返すスクリプトの例を以下に示す。

for item in {'a': 1, 'b': 2, 'c': 3}:
    print(item)

上記のスクリプトを実行した例を以下に示す。

$ pyhon3 example.py
a
b
c

スクリプトに渡されたコマンドライン引数

スクリプトに渡されたコマンドライン引数ごとに処理を繰り返すスクリプトの例を以下に示す。

import sys
for arg in sys.argv:
    print(arg)

上記のスクリプトを実行した例を以下に示す。

$ pyhon3 example.py foo bar
example.py
foo
bar

if

Pythonで条件判定を行うには、if文を使う。

if i == 1:
  print(i)
elif i == 2:
  print(i)
else:
  print(i)

while

Pythonで前判定による繰返し処理を行うには、while文を使う。

while i < 10:
  print(i)
  i = i + 1

関数

Python で関数を定義するには、以下のようにする。

def function_name(arg1, arg2, ...):
    statement

list()

list型のオブジェクトを生成するには、list()関数を使う。

a = list((0, 1, 2))

range()

range型のオブジェクトを生成するには、range()関数を使う。

for i in range(3):
  print(i)

os

Python の os モジュールは、OS に依存する機能を提供する。

os.walk()

ディレクトリツリー以下のファイル名を、ツリーをトップダウンもしくはボトムアップに走査することで作成する。

os.walk(top, topdown=True, onerror=None, followlinks=False)

タプル (dirpath, dirnames, filenames) を返す。

dirpath
文字列で、ディレクトリへのパス
dirnames
dirpath 内のサブディレクトリ名のリスト('.' と '..' を除く)

re

Python は正規表現を扱うための re モジュールを提供している。re モジュールは、正規表現を扱うためのフラグ、関数および例外を提供している。

モジュールのインポート

Python で正規表現を扱うためには、re モジュールをインポートする。

import re

正規表現のリテラル

正規表現のリテラルは、r に続けて、正規表現をシングルクォートで囲む。

r'foobar'

正規表現のリテラルの中で、特殊文字を使うことができる。

特殊文字

^

正規表現の特殊文字 ^ は、文字列の先頭にマッチする。

r'^foo''foo''foobar' にマッチするが、'barfoo' にはマッチしない。

$

正規表現の特殊文字 $ は、文字列の末尾にマッチする。

r'foo$''foo''barfoo' にマッチするが、'foobar' にはマッチしない。

*

正規表現の特殊文字 * は、直前の正規表現を0回以上繰り返したものにマッチする。

+

正規表現の特殊文字 + は、直前の正規表現を1回以上繰り返したものにマッチする。

?

正規表現の特殊文字 ? は、直前の正規表現を0回か1回繰り返したものにマッチする。

{m}

正規表現の特殊文字 {m} は、直前の正規表現を m 回繰り返したものにマッチする。

{m,n}

正規表現の特殊文字 {m,n} は、直前の正規表現を m 回から n 回、なるべく多く繰り返したものにマッチする。

[]

正規表現の特殊文字 [] は、カッコ内に列挙した文字のうち、いずれか一文字にマッチする。

[0123456789][0-9] と表現することもできる。

[abcdefghijklmnopqrstuvwxyz][a-z] と表現することもできる。

[ABCDEFGHIJKLMNOPQRSTUVWXYZ][A-Z] と表現することもできる。

A | B

正規表現の特殊文字 A | B は、A または B のいずれかにマッチする。

()

正規表現の特殊文字 () は、カッコ内の正規表現をグループ化する。

\d

正規表現の特殊文字 \d は、任意の数字にマッチする。正規表現の [0-9] と同じである。

\D

正規表現の特殊文字 \D は、任意の数字以外にマッチする。正規表現の [^0-9] と同じである。

\s

正規表現の特殊文字 \s は、任意の空白文字にマッチする。正規表現の [\t\n\r\f\v] と同じである。

\S

正規表現の特殊文字 \S は、任意の空白文字以外にマッチする。正規表現の [^\t\n\r\f\v] と同じである。

\w

正規表現の特殊文字 \w は、任意の英数字にマッチする。正規表現の [a-zA-Z0-9_] と同じである。

\W

正規表現の特殊文字 \W は、任意の英数字以外にマッチする。正規表現の [^a-zA-Z0-9_] と同じである。

関数

re.match()

文字列の先頭が指定した正規表現にマッチすれば、対応する Match を返す。もし、文字列がパターンとマッチしなければ、None を返す。

import re
s = "string"
m = re.match(r('[a-z]+'), s)
  

re.search()

文字列の指定した正規表現にマッチすれば、対応する Match を返す。もし、文字列がパターンとマッチしなければ、None を返す。

import re
s = "index.html"
m = re.searc(r('html$', s)

requests

Python からWeb APIを呼び出すには、requestsモジュールをインポートする。そのため、初めに一度だけrequestsモジュールをインストールする必要がある。

Pythonのrequestsモジュールをインストールするには、次のコマンドを実行する。

pip install requests

または、次のコマンドを実行する。

python -m pip install requests

クラス

request モジュールは以下に示すクラスを提供している。

Request

Request クラスは以下に示すプロパティを持つ。

Response

Responseオブジェクトは、HTTPリクエストに対するサーバーのレスポンスを含む。

Response クラスは以下に示すプロパティを持つ。

apparent_encoding
charset_normalizerまたはchardetライブラリによって提供される、見かけ上のエンコーディング
content
レスポンスの内容(バイト単位)
is_permanent_redirect
このレスポンスがリダイレクトのパーマネントバージョンであれば真
is_redirect
このResponseが、(Session.resolve_redirectsによって)自動的に処理されたかもしれない、整形式のHTTPリダイレクトであれば真
links
もしあれば、解析されたレスポンスのヘッダーリンクを返す。
next
リダイレクトチェーンに次のリクエストがある場合は、そのための PreparedRequest を返す。
ok
status_code が 400 未満であれば真を、そうでなければ偽を返す。
text
レスポンスの内容(ユニコード)

requests.get()

HTTPプロトコルの要求をGETメソッドで送信する。戻り値としてRequestオブジェクトを返す。

get(url, **kwargs)

get メソッドには以下の引数を指定する。

method
リクエストのメソッド
url
送信先URL
kwargs
オプション引数

requests.request()

HTTPプロトコルの要求を送信する。戻り値としてRequestオブジェクトを返す。

requests.request(method, url, **kwargs)

request メソッドには以下の引数を指定する。

method
リクエストのメソッド
url
送信先URL
kwargs
オプション引数

参考文献

MMXVIX. A Kenneth Reitz Project. (2024) Requests: HTTP for Humans

datetime

datetime.now()

datetimeオブジェクトのnowメソッドで現在の日付と時刻を取得できる。

import datetime

dt_now = datetime.datetime.now()
print(dt_now)

sys

Python の sys モジュールは、インタプリタで使用・管理している変数や、インタプリタの動作に深く関連する関数を定義している。このモジュールは常に利用可能である。

説明
sys.argv Python スクリプトに渡されたコマンドライン引数のリスト

Python スクリプトに渡されたコマンドライン引数のリスト

sys.argv は、Python スクリプトに渡されたコマンドライン引数のリストを表す。argv[1] 以降にコマンドライン引数が格納され、argv[0] にはスクリプト名が格納される。

渡されたコマンドライン引数を表示するスクリプトを以下に示す。

import sys
for arg in sys.argv:
    print(arg)

スクリプトの実行例を次に示す。

$ python3 example.py foo bar
example.py
foo
bar