ブルーバックス『入門者のPython』 サポートページ

入門者のPython

ダウンロード

本書のダウンロードファイル(作例1〜3の関連ファイル一式)と付録1〜3のPDF(電子版では、末尾に掲載)です。下記[ダウンロード]をクリックし、ZIPファイルをダウンロードして、解凍してください。  ※クリックでダウンロードが始まらなければ、右クリック→[対象をファイルに保存]

【重要!】 ダウンロードファイルの解凍はWindows標準のエクスプローラーではなく、圧縮・解凍の定番フリーソフト「Lhaplus」で行ってください。エクスプローラーで解凍すると、作例1で用いる画像ファイルの更新日時が誌面と異なる値に上書きされてしまいます。

Lhaplusの入手先 窓の杜 Vector

本書にURLを掲載しているWebページのリンク

  • 「作例2用のWebページ」(24ページ、299ページに掲載)はこちら
  • 「Anacondaのインストーラー」(33ページで紹介)のダウンロードページはこちら

刊行後に生じた操作手順の変更などの情報

WindowsやPythonのライブラリ、Anaconda、Spyderの更新にともなう、本書で解説する操作手順への影響や対応策の紹介です。

  • なし(2018/9/17)

本書初版刊行時の2018年9月から3年経過後、その他やむを得ない事情が生じた場合、以下の情報の更新を終了させていただくことがございます。あらかじめご了承ください。

補足説明

紙面の都合、掲載できなかった補足説明です。

1章 22ページ コラム「更新日を撮影日と見なす」の「Exif情報を使ったプログラム」について

参考までに、更新日ではなくExif情報の撮影日によって処理するプログラム「sample1撮影日時.py」をダウンロードファイルに用意しました。10章終了時点のコードを、Exif情報の撮影日で処理するよう変更したコードです。10章読了後にご覧下さい。以下、コードの補足説明です。

11行目 import PIL
画像処理用の「Pillow」モジュールを読み込みます。Exif情報処理用の各種関数も含まれています。コードでは「PIL」と記述します。
18行目 img = PIL.Image.open(MY_DIR + i)
目的の画像ファイルを開き、変数imgに代入。Exif情報を取得するには、まずは目的の画像ファイルを開く必要があります。
19行目 exif = img._getexif()
Exif情報を取得し、変数exifに代入。Exif情報は目的の画像のオブジェクトの「_getexif」メソッドで取得します。Eixf情報は撮影日(DateTimeOriginal 時刻も含む)をはじめ複数の項目が含まれており、同メソッドによってリストのかたちで取得されます。
20行目 img.close()
「close」メソッドによって、画像ファイルを閉じます。
21行目 dto = exif[36867]
Exif情報の撮影日を取得し、変数dtoに代入。Exifの撮影日は番号(タグ)が36867と決められており、リストexifのインデックス番号にその36867を指定することで取得できます。
22行目 dt = datetime.datetime.strptime(dto,'%Y:%m:%d %H:%M:%S')
datetime.datetime.strptime関数の第1引数に、撮影日が代入されている変数dtoを指定することで、撮影日によるフォルダー名を作成しています。

1章 26ページ ファイルの拡張子を表示させる操作の補足

ファイル拡張子を表示する操作手順(同ページのコラムで紹介)の画面です。

2章 33ページ Anacondaインストール手順の追加情報

刊行後のAnacondaの更新などにより生じたAnacondaのインストール手順の変更を解説します。 ※変更が生じたら随時掲載します。

2章 43ページ SpyderおよびAnacondaのアップデートについて

Spyderや各種ライブラリの不具合を修正したり新機能を追加したりするため、Anacondaは定期的にアップデートしましょう。手順は以下の通りです。手順2〜4は完了までしばらく時間がかかります。途中で「Proceed ([y]/n)?」と表示されたら、そのまま[Enter]キーを押して続行してください。

1. [スタート]メニューの[Anaconda3]→[Anaconda Prompt]をクリックし、「Anaconda Prompt」を開く
2. Anacondaのコマンドプロンプトが表示される。「conda update conda」と入力して、[Enter]キーを押す。
3. 「conda update anaconda」と入力して、[Enter]キーを押す。
4. 「conda update --all」と入力して、[Enter]キーを押す。

※もし、「HTTPError」が表示されてアップデートに失敗したら、少々時間を空けて再度試してください。それでも失敗したら、パソコンを職場のネットワークから自宅のネットワークにつなぎ直すなど、インターネット接続環境を変えて再度試してください。

4章 66ページ 図4-1-3で紹介の「フォルダー内の表示形式の設定方法」の補足説明

「photo」フォルダー内の表示形式を「詳細」にして、「更新日時」と「撮影日時」が表示されるように設定する手順は次の通りです。

1.[表示]タブの「レイアウト」の@[詳細]を選びます。表示形式が「詳細」に切り替わります。A項目名の部分を右クリックし、B[更新日時]をクリックしてチェックを入れます。[撮影日]も同様にチェックを入れます。これで「更新日時」と「撮影日時」の項目が表示されます。

2.C「更新日時」と「撮影日時」の項目名の部分をドラッグして並べ替える。

5章 103ページなど 001.jpgの更新日時の「秒単位のデータ」のずれ

001.jpgの更新日の秒単位のデータは、お使いのパソコンのOSの日付時刻の設定等によって、「1539912032.0」などと1秒ずれる場合があります。この値の最後「〜32.0」は秒を表しており、001.jpg自体の更新日時の秒になります。お手元の001.jpgの更新日時の秒を確認するには、「photo」フォルダーを開き、001.jpgを右クリック→[プロパティ]をクリックして、「プロパティ」画面を開きます。[全般]タブの「更新日時」を見れば、秒を確認できます。以下の画面は1秒後ろにずれて、10:20:32となった例です。この場合、001.jpgの更新日の秒単位のデータは「1539912032.0」となります。

8章 242ページ フォルダー数を「数える」関数を用いた方法について

コラム「フォルダー数を「数える」関数を用いた方法の場合」の処理は、P247で登場する「os.listdir」関数と、組み込み関数の「len」関数を組み合わせた方法で作成します。具体的なコードは、この次の10章 292ページの補足にて紹介します。

10章 292ページ os.makedirs関数に書き換えることで必要となる変数fldnumの処理部分の調整

os.makedirs関数によってif文の処理が不要になることなどから、作成されたフォルダー数を数える処理は、上記「8章 242ページ フォルダー数を「数える」関数を用いた方法について」の方法に変更します。具体的には、フォルダー数は組み込み関数の「len」関数で数えます。len関数は引数にリストを指定すると、そのリストの要素数を数値として取得できます。
フォルダー作成処理が終わった後(for文の後)にて、「os.listdir(MY_DIR)」で「photo」フォルダー内のファイル/フォルダー数を再び調べると、作成されたフォルダー名のリストが得られます。そのリストをlen関数の引数に指定するよう「len(os.listdir(MY_DIR))」と記述すれば、フォルダー数が得られます。その値を変数fldnumに代入します。また、この処理のみで数えられるため、コード「fldnum = 0」と「fldnum += 1」は不要になるので削除します。したがって、必要なコードは「fldnum = len(os.listdir(MY_DIR))」のみとなり、コードがよりスッキリします。

11章 318〜319ページ エラー「既存の接続はリモートホストに強制的に切断されました」の対策

sample2.pyを実行した結果、「既存の接続はリモートホストに強制的に切断されました」というエラーとなったら、パソコンを職場のネットワークから自宅のネットワークにつなぎ直すなど、インターネット接続環境を変更してください。

11章 346〜347ページ open関数の3つ目の引数

open関数の3つ目の引数「newline="」のイコールの右辺は、「'」(シングルクォーテーション)が2つです。「"」(ダブルクォーテーション)が1つではありませんので、お間違いないようご注意願います。

正誤表

※判明次第、随時掲載させていただきます。