退屈なことはPythonにやらせよう

―ノンプログラマーにもできる自動化処理プログラミング

[cover photo]
TOPICS
Programming , Python
発行年月日
PRINT LENGTH
616
ISBN
978-4-87311-778-2
原書
Automate the Boring Stuff with Python
FORMAT
PDF EPUB
Print
4,070円
この商品は品切れ再入荷未定です

ファイル名の変更や表計算のデータ更新といった作業は、日々の仕事の中で頻繁に発生します。ひとつふたつ修正するだけであれば問題ないのですが、それが数十、数百となってくると手に負えません。そのような単純な繰り返し作業はコンピュータに肩代わりしてもらうとすごくラクになります。本書では、手作業だと膨大に時間がかかる処理を一瞬でこなすPython 3プログラムの作り方について学びます。対象読者はノンプログラマー。本書で基本をマスターすれば、プログラミング未経験者でも面倒な単純作業を苦もなくこなす便利なプログラムを作れるようになります。さらに、章末の練習問題を解くことで、類似のタスクを自動処理するスキルをもっと高めることができます。

 
サンプルPDF(前付、1章、17章) サンプルコード(GitHubリポジトリ)

翻訳者の相川氏のブログにも、本書の追加情報や関連する技術情報が掲載されます。

関連ファイル

正誤表

ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。

正誤表


本書の正誤情報は以下のページで公開しています。

https://github.com/oreilly-japan/automatestuff-ja/wiki/errata

目次

訳者まえがき
まえがき

第Ⅰ部 Pythonプログラミングの基礎

1章 Python入門 
    1.1 式をインタラクティブシェルに入力する
    1.2 整数、浮動小数点数、文字列型
    1.3 文字列の連結と複製
    1.4 変数に値を格納する
        1.4.1 代入文
        1.4.2 変数名
    1.5 最初のプログラム
    1.6 プログラムを分析する
        1.6.1 コメント
        1.6.2 print()関数
        1.6.3 input()関数
        1.6.4 ユーザー名を表示する
        1.6.5 len()関数
        1.6.6 str()、int()、float()関数
    1.7 まとめ
    1.8 演習問題

2章 フロー制御 
    2.1 ブール型
    2.2 比較演算子
    2.3 ブール演算子
        2.3.1 二項ブール演算子
        2.3.2 not演算子
    2.4 ブール演算子と比較演算子を組み合わせる
    2.5 フロー制御の構成要素
        2.5.1 条件式
        2.5.2 コードのブロック
    2.6 プログラム実行
    2.7 フロー制御文
        2.7.1 if文
        2.7.2 else文
        2.7.3 elif文
        2.7.4 whileループ文
        2.7.5 break文
        2.7.6 continue文
        2.7.7 forループと range()関数
    2.8 モジュールをインポートする
        2.8.1 from import文
    2.9 sys.exit()関数を用いてプログラムを早期に終了する
    2.10 まとめ
    2.11 演習問題

3章 関数 
    3.1 パラメータのあるdef文
    3.2 戻り値とreturn文
    3.3 None値
    3.4 キーワード引数とprint()関数
    3.5 ローカルスコープとグローバルスコープ
        3.5.1 ローカル変数はグローバルスコープから使えない
        3.5.2 ローカルスコープでは他のローカルスコープの変数を使えない
        3.5.3 グローバル変数はローカルスコープから読むことができる
        3.5.4 同じ名前のローカル変数とグローバル変数
    3.6 global文
    3.7 例外処理
    3.8 短いプログラム:数当てゲーム
    3.9 まとめ
    3.10 演習問題
    3.11 演習プロジェクト
        3.11.1 コラッツ数列
        3.11.2 入力の妥当性検証

4章 リスト 
    4.1 リスト型
        4.1.1 インデックスを指定してリストから要素を取り出す
        4.1.2 負のインデックス
        4.1.3 スライスを用いて部分リストを取得する
        4.1.4 len()関数を用いてリストの長さを取得する
        4.1.5 インデックスを用いてリスト中の値を変更する
        4.1.6 リストの連結とリストの複製
        4.1.7 del文を用いてリストから値を削除する
    4.2 リストを使ってみる
        4.2.1 forループとリストを組み合わせる
        4.2.2 inとnot in演算子
        4.2.3 複数代入法
    4.3 累算代入演算子
    4.4 メソッド
        4.4.1 index()メソッドを用いてリストから値を検索する
        4.4.2 append()メソッドとinsert()メソッドを用いてリストに値を追加する
        4.4.3 remove()メソッドを用いてリストから値を削除する
        4.4.4 sort()メソッドを用いてリスト中の値をソートする
    4.5 例題プログラム:リストを用いたマジック8ボール
    4.6 リスト風のデータ型:文字列とタプル
        4.6.1 ミュータブル、イミュータブルなデータ型
        4.6.2 タプル型
        4.6.3 list()関数とtuple()関数を使って型を変換する
    4.7 参照
        4.7.1 参照を渡す
        4.7.2 copyモジュールのcopy()関数とdeepcopy()関数
    4.8 まとめ
    4.9 演習問題
    4.10 演習プロジェクト
        4.10.1 カンマ付け
        4.10.2 文字絵グリッド

5章 辞書とデータ構造 
    5.1 辞書型
        5.1.1 辞書とリストの比較
        5.1.2 keys()、values()、items()メソッド
        5.1.3 キーや値が辞書に存在するかどうか判定する
        5.1.4 get()メソッド
        5.1.5 setdefault()メソッド
    5.2 整形表示
    5.3 データ構造を用いて実世界の物体をモデル化する
        5.3.1 三目並べのボード
        5.3.2 辞書とリストの入れ子
    5.4 まとめ
    5.5 演習問題
    5.6 演習プロジェクト
        5.6.1 ファンタジーゲームの持ち物リスト
        5.6.2 ファンタジーゲームの持ち物リスト用にリストから辞書に移す関数

6章 文字列操作 
    6.1 文字列を操作する
        6.1.1 文字列リテラル
        6.1.2 文字列のインデックスとスライス
        6.1.3 文字列に対するinとnot in演算子
    6.2 便利な文字列メソッド
        6.2.1 upper()、lower()、isupper()、islower()メソッド
        6.2.2 isXという文字列メソッド
        6.2.3 startswith()メソッドとendswith()メソッド
        6.2.4 join()とsplit()メソッド
        6.2.5 rjust()、ljust()、center()メソッドを用いてテキストを揃える
        6.2.6 strip()、rstrip()、lstrip()メソッドを用いて空白文字を除去する
        6.2.7 pyperclipモジュールを用いて文字列をコピー&ペーストする
    6.3 プロジェクト:パスワードロッカー
        6.3.1 ステップ1:プログラムの設計とデータ構造
        6.3.2 ステップ2:コマンドライン引数を扱う
        6.3.3 ステップ3:正しいパスワードをコピーする
    6.4 プロジェクト:Wikiで箇条書きのマークアップ
        6.4.1 ステップ1:クリップボードからコピーする
        6.4.2 ステップ2:行を分割して「*」を追加する
        6.4.3 ステップ3:変更した行を結合する
    6.5 まとめ
    6.6 演習問題
    6.7 演習プロジェクト
        6.7.1 表の表示

第Ⅱ部 処理の自動化

7章 正規表現によるパターンマッチング 
    7.1 正規表現を用いないテキストパターン検索
    7.2 正規表現を用いてテキストパターンを検索する
        7.2.1 Regexオブジェクトを生成する
        7.2.2 Regexオブジェクトとマッチする
        7.2.3 正規表現マッチのまとめ
    7.3 正規表現によるパターンマッチの続き
        7.3.1 丸カッコを用いたグルーピング
        7.3.2 縦線を使って複数のグループとマッチする
        7.3.3 疑問符を用いた任意のマッチ
        7.3.4 アスタリスクを用いた0回以上のマッチ
        7.3.5 プラスを用いた1回以上のマッチ
        7.3.6 波カッコを用いて繰り返し回数を指定する
    7.4 貪欲マッチと非貪欲マッチ
    7.5 findall()メソッド
    7.6 文字集合
    7.7 独自に文字集合を定義する
    7.8 キャレットとドル記号
    7.9 ワイルドカード文字
        7.9.1 ドットとアスタリスクであらゆる文字列とマッチする
        7.9.2 ドット文字を改行とマッチさせる
    7.10 正規表現に用いる記号のまとめ
    7.11 大文字・小文字を無視したマッチ
    7.12 sub()メソッドを用いて文字列を置換する
    7.13 複雑な正規表現を管理する
    7.14 re.IGNORECASEとre.DOTALLとre.VERBOSEを組み合わせる
    7.15 プロジェクト:電話番号と電子メールアドレスの抽出
        7.15.1 ステップ1:電話番号用の正規表現を作る
        7.15.2 ステップ2:電子メールアドレスの正規表現を作る
        7.15.3 ステップ3:クリップボードのテキストを検索する
        7.15.4 ステップ4:検索結果を1つの文字列にまとめてクリップボードに移す
        7.15.5 プログラムを実行する
        7.15.6 類似プログラムのアイデア
    7.16 まとめ
    7.17 演習問題
    7.18 演習プロジェクト
        7.18.1 強いパスワードの検出
        7.18.2 正規表現を用いたstrip()メソッド

8章 ファイルの読み書き 
    8.1 ファイルとファイルパス
        8.1.1 Windowsのバックスラッシュ、MacやLinuxのスラッシュ
        8.1.2 カレントディレクトリ
        8.1.3 絶対パスと相対パス
        8.1.4 os.makedirs()関数を用いて新しいフォルダを作る
    8.2 os.pathモジュール
        8.2.1 絶対パスと相対パスを操作する
        8.2.2 ファイルサイズとフォルダ内容を調べる
        8.2.3 パスを検査する
    8.3 ファイルの読み書きの方法
        8.3.1 open()関数を用いてファイルを開く
        8.3.2 ファイルの内容を読み込む
        8.3.3 ファイルを書き込む
    8.4 shelveモジュールを用いて変数を保存する
    8.5 pprint.pformat()関数を用いて変数を保存する
    8.6 プロジェクト:ランダムな問題集ファイルを作成する
        8.6.1 ステップ1:問題データを辞書に記述する
        8.6.2 ステップ2:問題集のファイルを作り問題をシャッフルする
        8.6.3 ステップ3:問題と選択肢を作成する
        8.6.4 ステップ4:問題集と解答集ファイルに内容を書き出す
    8.7 プロジェクト:マルチクリップボード
        8.7.1 ステップ1:コメントとシェルフの設定
        8.7.2 ステップ2:キーワードに紐づけてクリップボードの内容を保存する
        8.7.3 ステップ3:キーワード一覧と、キーワード内容を読み込む
    8.8 まとめ
    8.9 演習問題
    8.10 演習プロジェクト
        8.10.1 マルチクリップボードを拡張する
        8.10.2 作文ジェネレータ
        8.10.3 正規表現検索

9章 ファイルの管理 
    9.1 shutilモジュール
        9.1.1 ファイルやフォルダをコピーする
        9.1.2 ファイルやフォルダを移動したり名前を変更したりする
        9.1.3 ファイルやフォルダを完全に削除する
        9.1.4 send2trashモジュールを用いて安全に削除する
    9.2 ディレクトリツリーを渡り歩く
        9.2.1 zipfileモジュールを用いてファイルを圧縮する
        9.2.2 ZIPファイルを読み込む
        9.2.3 ZIPファイルを展開する
        9.2.4 ZIPファイルを作成したり追加したりする
    9.3 プロジェクト:米国式日付を欧州式日付に変換する
        9.3.1 ステップ1:米国式日付用の正規表現を作る
        9.3.2 ステップ2:ファイル名から日付の部分を識別する
        9.3.3 ステップ3:新しいファイル名を作りファイルの名前を変更する
        9.3.4 類似プログラムのアイデア
    9.4 プロジェクト:フォルダをZIPファイルにバックアップする
        9.4.1 ステップ1:ZIPファイル名を決める
        9.4.2 ステップ2:新しいZIPファイルを作る
        9.4.3 ステップ3:ディレクトリツリーを渡り歩いてZIPファイルに追加する
        9.4.4 類似プログラムのアイデア
    9.5 まとめ
    9.6 演習問題
    9.7 演習プロジェクト
        9.7.1 選択コピー
        9.7.2 巨大なファイルを探す
        9.7.3 連番の飛びを埋める

10章 デバッグ 
    10.1 例外を起こす
    10.2 トレースバックを文字列として受け取る
    10.3 アサート
        10.3.1 信号シミュレーションにアサートを用いる
        10.3.2 アサートを無効化する
    10.4 ログをとる
        10.4.1 loggingモジュールを用いる
        10.4.2 print()関数でデバッグしないようにしよう
        10.4.3 ログレベル
        10.4.4 ログを無効化する
        10.4.5 ファイルへログ出力する
    10.5 IDLEのデバッガ
        10.5.1 [Go]ボタン
        10.5.2 [Step]ボタン
        10.5.3 [Over]ボタン
        10.5.4 [Out]ボタン
        10.5.5 [Quit]ボタン
        10.5.6 足し算プログラムをデバッグする
        10.5.7 ブレークポイント
    10.6 まとめ
    10.7 演習問題
    10.8 演習プロジェクト
        10.8.1 コイン投げゲームをデバッグする

11章 Webスクレイピング 
    11.1 プロジェクト:webbrowserモジュールを用いたmapIt.py
        11.1.1 ステップ1:URLを検討する
        11.1.2 ステップ2:コマンドライン引数を処理する
        11.1.3 ステップ3:クリップボード内容を扱いブラウザを起動する
        11.1.4 類似プログラムのアイデア
    11.2 requestsモジュールを用いてWebサイトからファイルをダウンロードする
        11.2.1 requests.get()関数を用いてWebページをダウンロードする
        11.2.2 エラーをチェックする
        11.2.3 ダウンロードしたファイルをハードドライブに保存する
    11.3 HTML
        11.3.1 HTMLについて学習するには
        11.3.2 ざっとおさらい
        11.3.3 WebページのソースHTMLを見る
        11.3.4 ブラウザの開発者ツールを開く
        11.3.5 開発者ツールを用いてHTML要素を検索する
    11.4 BeautifulSoupモジュールを用いてHTMLを解析する
        11.4.1 HTMLからBeautifulSoupオブジェクトを生成する
        11.4.2 select()メソッドを用いて要素を見つける
        11.4.3 要素の属性からデータを取得する
    11.5 プロジェクト:Google検索“I'm Feeling Lucky”
        11.5.1 ステップ1:コマンドライン引数を取得し検索ページをリクエストする
        11.5.2 ステップ2:結果をすべて取得する
        11.5.3 ステップ3:検索結果をWebブラウザで開く
        11.5.4 類似プログラムのアイデア
    11.6 プロジェクト:すべてのXKCDコミックをダウンロードする
        11.6.1 ステップ1:プログラムを設計する
        11.6.2 ステップ2:Webページをダウンロードする
        11.6.3 ステップ3:コミック画像を見つけてダウンロードする
        11.6.4 ステップ4:画像を保存し前のコミックを見つける
        11.6.5 類似プログラムのアイデア
    11.7 seleniumモジュールを用いてブラウザを制御する
        11.7.1 Seleniumでブラウザを制御する
        11.7.2 ページの要素を見つける
        11.7.3 ページをクリックする
        11.7.4 フォームを記入して送信する
        11.7.5 特殊なキーを送信する
        11.7.6 ブラウザのボタンをクリックする
        11.7.7 Seleniumの詳細情報
    11.8 まとめ
    11.9 演習問題
    11.10 演習プロジェクト
        11.10.1 コマンドライン電子メーラー
        11.10.2 画像サイトのダウンローダー
        11.10.3 2048 
        11.10.4 リンクの検査

12章 Excelシート 
    12.1 Excel文書
    12.2 openpyxlモジュールをインストールする
    12.3 Excel文書を読み込む
        12.3.1 OpenPyXLを用いてExcelドキュメントを開く
        12.3.2 Workbookからシートを取得する
        12.3.3 シートからセルを取得する
        12.3.4 列の文字と番号を相互変換する
        12.3.5 シートから複数の行と列を取得する
        12.3.6 ワークブック、シート、セル
    12.4 プロジェクト:スプレッドシートからデータを読み込む
        12.4.1 ステップ1:スプレッドシートのデータを読み込む
        12.4.2 ステップ2:データ構造を追加する
        12.4.3 ステップ3:結果をファイルに書き出す
        12.4.4 類似プログラムのアイデア
    12.5 Excel文書を書き出す
        12.5.1 Excel文書を作成して保存する
        12.5.2 シートを追加・削除する
        12.5.3 セルに値を書き込む
    12.6 プロジェクト:スプレッドシートを更新する
        12.6.1 ステップ1:更新する情報のデータ構造を組み立てる
        12.6.2 ステップ2:すべての行を調べて価格を更新する
        12.6.3 類似プログラムのアイデア
    12.7 セルのフォントスタイルを設定する
    12.8 Fontオブジェクト
    12.9 数式
    12.10 行と列を調整する
        12.10.1 行の高さと列の幅を設定する
        12.10.2 セルの結合と解除
        12.10.3 ウィンドウ枠の固定
    12.11 グラフ
    12.12 まとめ
    12.13 演習問題
    12.14 演習プロジェクト
        12.14.1 掛け算の表を作成する
        12.14.2 空行を挿入する
        12.14.3 行と列の入れ替え
        12.14.4 テキストファイルからスプレッドシートに変換する
        12.14.5 スプレッドシートからテキストファイルに変換する

13章 PDFファイルとWord文書 
    13.1 PDF文書
        13.1.1 PDFからテキストを抽出する
        13.1.2 PDFの暗号を解く
        13.1.3 PDFを作成する
    13.2 プロジェクト:多数のPDFから指定したページを結合する
        13.2.1 ステップ1:すべてのPDFファイルを探す
        13.2.2 ステップ2:PDFを開く
        13.2.3 ステップ3:ページを追加する
        13.2.4 ステップ4:結果を保存する
        13.2.5 類似プログラムのアイデア
    13.3 Word文書
        13.3.1 Word文書を読み込む
        13.3.2 .docxファイルから全テキストを取得する
        13.3.3 ParagraphとRunオブジェクトにスタイルを設定する
        13.3.4 デフォルトでないスタイルを使ってWord文書を作成する
        13.3.5 Runの属性
        13.3.6 Word文書を書き込む
        13.3.7 見出しを追加する
        13.3.8 改行と改ページを追加する
        13.3.9 図を追加する
    13.4 まとめ
    13.5 演習問題
    13.6 演習プロジェクト
        13.6.1 PDFをまとめて暗号化
        13.6.2 Word文書による特製招待状
        13.6.3 総当たり方式のPDFパスワード解除

14章 CSVファイルと JSONデータ 
    14.1 csvモジュール
        14.1.1 Readerオブジェクト
        14.1.2 forループでReaderオブジェクトからデータを読み出す
        14.1.3 Writerオブジェクト
        14.1.4 キーワード引数delimiterとlineterminator
    14.2 プロジェクト:CSVファイルから見出しを削除する
        14.2.1 ステップ1:各CSVファイルをループする
        14.2.2 ステップ2:CSVファイルを読み込む
        14.2.3 ステップ3:CSVを書き出す
        14.2.4 類似プログラムのアイデア
    14.3 JSONとAPI
    14.4 jsonモジュール
        14.4.1 loads()関数を用いてJSONを読み込む
        14.4.2 dumps()関数を用いてJSONを書き出す
    14.5 プロジェクト:現在の天気予報データを取得する
        14.5.1 ステップ1:コマンドライン引数から地名を取得する
        14.5.2 ステップ2:JSONデータをダウンロードする
        14.5.3 ステップ3:JSONデータを読み込み天気予報を表示する
        14.5.4 類似プログラムのアイデア
    14.6 まとめ
    14.7 演習問題
    14.8 演習プロジェクト
        14.8.1 ExcelからCSVへの変換

15章 時間制御、自動実行、プログラム起動 
    15.1 timeモジュール
        15.1.1 time.time()関数
        15.1.2 time.sleep()関数
    15.2 数の四捨五入
    15.3 プロジェクト:スーパーストップウォッチ
        15.3.1 ステップ1:時間計測の準備をする
        15.3.2 ステップ2:経過時間を表示する
        15.3.3 類似プログラムのアイデア
    15.4 datetimeモジュール
        15.4.1 timedeltaデータ型
        15.4.2 特定の日付まで一時停止する
        15.4.3 datetimeオブジェクトを文字列に変換する
        15.4.4 文字列をdatetimeオブジェクトに変換する
    15.5 Pythonの時間関数のまとめ
    15.6 マルチスレッド
        15.6.1 スレッドの対象関数に引数を渡す
        15.6.2 並行処理問題
    15.7 プロジェクト:マルチスレッド版XKCDダウンローダー
        15.7.1 ステップ1:関数を使うようにプログラムを改造する
        15.7.2 ステップ2:スレッドを作成して開始する
        15.7.3 ステップ3:すべてのスレッドが終了するのを待つ
    15.8 Pythonから他のプログラムを実行する
        15.8.1 Popenにコマンドライン引数を渡す
        15.8.2 タスクスケジューラ、launchd、cron
        15.8.3 PythonでWebサイトを開く
        15.8.4 他のPythonスクリプトを実行する
        15.8.5 既定のアプリでファイルを開く
    15.9 プロジェクト:シンプルなカウントダウンプログラム
        15.9.1 ステップ1:カウントダウン
        15.9.2 ステップ2:音声ファイルを再生する
        15.9.3 類似プログラムのアイデア
    15.10 まとめ
    15.11 演習問題
    15.12 演習プロジェクト
        15.12.1 ストップウォッチの整形
        15.12.2 Webコミックダウンローダをスケジュール

16章 電子メールやSMSの送信 
    16.1 SMTP 
    16.2 メールを送信する
        16.2.1 SMTPサーバーに接続する
        16.2.2 SMTPに"Hello"メッセージを送信する
        16.2.3 TLS暗号化の開始
        16.2.4 SMTPサーバーにログインする
        16.2.5 メールを送信する
        16.2.6 SMTPサーバーから切断する
    16.3 IMAP
    16.4 IMAPを使ってメールを取得・削除する
        16.4.1 IMAPサーバーに接続する
        16.4.2 IMAPサーバーにログインする
        16.4.3 メールを探す
        16.4.4 メールを取得して既読マークを付ける
        16.4.5 生のメッセージからメールアドレスを取得する
        16.4.6 生のメッセージから本文を取り出す
        16.4.7 メールを削除する
        16.4.8 IMAPサーバーからの接続を切断する
    16.5 プロジェクト:会費リマインダーメールを送る
        16.5.1 ステップ1:Excelファイルを開く
        16.5.2 ステップ2:未払い会員を調べる
        16.5.3 ステップ3:カスタマイズしたリマインダーメールを送信する
        16.5.4 Twilioを使ってSMSを送る
        16.5.5 Twilioアカウントにサインアップする
        16.5.6 SMSを送信する
    16.6 プロジェクト:「私にSMSを送って」モジュール
    16.7 まとめ
    16.8 演習問題
    16.9 演習プロジェクト
        16.9.1 雑用ランダム割り当てメーラー
        16.9.2 傘のリマインダー
        16.9.3 自動退会機
        16.9.4 メールを使ってコンピュータを制御する

17章 画像の操作 
    17.1 コンピュータ画像の基礎
        17.1.1 色とRGBA値
        17.1.2 座標と矩形タプル
    17.2 Pillowで画像を操作する
        17.2.1 Imageオブジェクトを操作する
        17.2.2 画像を切り抜く
        17.2.3 画像のコピー&ペースト
        17.2.4 画像をサイズ変更する
        17.2.5 画像を回転・反転する
        17.2.6 ピクセルを変更する
    17.3 プロジェクト:ロゴを追加する
        17.3.1 ステップ1:ロゴ画像を開く
        17.3.2 ステップ2:全ファイルをループして画像を開く
        17.3.3 ステップ3:画像をサイズ変更する
        17.3.4 ステップ4:ロゴを追加して変更を保存する
        17.3.5 類似プログラムのアイデア
    17.4 画像に描画する
        17.4.1 図形を描画する
        17.4.2 テキストを描画する
    17.5 まとめ
    17.6 演習問題
    17.7 演習プロジェクト
        17.7.1 章プロジェクトの改造と修正
        17.7.2 ハードドライブの写真フォルダを探す
        17.7.3 カスタム座席カード

18章 GUIオートメーションによるキーボードとマウスの制御 
    18.1 pyautoguiモジュールをインストールする
    18.2 うまく進めるには
        18.2.1 ログアウトしてすべてを終了する
        18.2.2 一時停止とフェールセーフ
    18.3 マウス移動を制御する
        18.3.1 マウスを移動する
        18.3.2 マウスの位置を取得する
    18.4 プロジェクト:マウスは今どこにある?
        18.4.1 ステップ1:モジュールをインポートする
        18.4.2 ステップ2:中断用のコードを設定して無限ループ
        18.4.3 ステップ3:マウス座標を取得して表示する
        18.4.4 マウス操作を制御する
        18.4.5 マウスをクリックする
        18.4.6 マウスをドラッグする
        18.4.7 マウスホイールを操作する
    18.5 画面を操作する
        18.5.1 スクリーンショットをとる
        18.5.2 スクリーンショットを解析する
    18.6 プロジェクト:mouseNowプログラムを拡張する
    18.7 画像認識
    18.8 キーボードを制御する
        18.8.1 仮想キーボードから文字列を送信する
        18.8.2 キーの名前
        18.8.3 キーボードを押下・解放する
        18.8.4 ホットキーの組み合わせ
    18.9 PyAutoGUI関数のまとめ
    18.10 プロジェクト:自動フォーム入力
        18.10.1 ステップ1:手順を調べる
        18.10.2 ステップ2:座標を設定する
        18.10.3 ステップ3:データ入力を始める
        18.10.4 ステップ4:ドロップダウンメニューやラジオボタンを処理する
        18.10.5 ステップ5:フォームを送信して待つ
    18.11 まとめ
    18.12 演習問題
    18.13 演習プロジェクト
        18.13.1 忙しそうに見せる
        18.13.2 インスタントメッセンジャーのボット
        18.13.3 ゲームを操作するボットのチュートリアル

付録A サードパーティー製モジュールのインストール 
    A.1 pipツール
    A.2 サードパーティーのモジュールをインストールする

付録B Pythonスクリプトの実行 
    B.1 シバン行
    B.2 WindowsでPythonスクリプトを実行する
    B.3 MacやLinuxでPythonスクリプトを実行する
    B.4 アサートを無効にして実行する

付録C 演習問題の解答 
    C.1 1章Python入門
    C.2 2章フロー制御
    C.3 3章関数
    C.4 4章リスト
    C.5 5章辞書とデータ構造
    C.6 6章文字列操作
    C.7 7章正規表現によるパターンマッチング
    C.8 8章ファイルの読み書き
    C.9 9章ファイルの管理
    C.10 10章デバッグ
    C.11 11章Webスクレイピング
    C.12 12章Excelシート
    C.13 13章PDFファイルとWord文書
    C.14 14章CSVファイルとJSONデータ
    C.15 15章時間制御、自動実行、プログラム起動
    C.16 16章電子メールやSMSの送信
    C.17 17章画像の操作
    C.18 18章GUIオートメーションによるキーボードとマウスの制御


付録D 日本語テキスト処理 
    D.1 原稿のフォーマット
    D.2 誤記検出ツール
        D.2.1 ソースコード
        D.2.2 実行結果
        D.2.3 改良
        D.2.4 ソースコード
        D.2.5 実行結果

索引

コラム目次
    間違っても気にしない!
    テキストと数字の等価性
    ==と=の違い
    無限ループに陥ったら?
    TrueやFalseとみなされる値
    ブラックボックスとしての関数
    Pythonの字下げルールの例外
    IDLEの外でPythonスクリプトを実行する
    章のプロジェクト
    re.compile()にraw文字列を渡す
    UNICODEエンコーディング
    HTMLを解析するのに正規表現を使わない
    やっかいなPDF形式
    UNIXの哲学
    Gmailのアプリケーション固有のパスワード
    IMAPClientのgmail_search()メソッドを用いる
    PythonでSMSを受信する
    CMYKとRGB
    透明ピクセルの貼り付け