1.準備
1_6 DOSコマンド(2019/3/13)
1)コマンドプロンプト
本ブログでは、既に述べたように、「Anaconda Prompt」でIPythonというインタープリターを動かした環境でデータ分析を進めます。これは、Windows上では、一般的に「コマンドプロンプト」と呼ばれるものと同じです。
一般的な「コマンドプロンプト」は、Windowsのスタートメニューから、「Windows システムツール」の中の「コマンドプロンプト」を選択することで実行できます。「Anaconda Prompt」は、この「コマンドプロンプト」に対して、Anacondaの各種プログラムが実行できる様に「path」が設定してあるだけです。つまり、「コマンドプロンプト」の一般的な使用方法が「Anaconda Prompt」でも、そのまま使えるという事になります。
「コマンドプロンプト」は、マイクロソフト社がWindowsを発表する前のOSであるMS-DOSの実行環境を模したコマンドを実行する環境という事になります。MS-DOSの時代では、Window画面が複数開くことはなく、アイコンも無く、1つの画面でコマンドを実行することでパソコンを操作していました。これをWindowsの1つのWindow画面上で可能にするものということです。当時の実行環境と同じものではありませんが、当時と同じようにコマンドベースでパソコンを操作することになります。当時は、インターネットが無く、パソコンは独立しており、キーボードで入力し、画面に表示させたり、プリンターに印刷するのが基本でした。また、DOS(Disk Operation System)と呼ばれるように、内臓ディスクや外部ディスクにプログラムやデータを格納するのが基本となっていました。
「コマンドプロンプト」の黒い画面では、DOSコマンドやプログラムをキー入力し、改行キーで実行します。「コマンドプロンプト」の設定変更は、画面上部の画面名の左にあるアイコンをクリックすることで可能になりますが、特に変更する必要はありません。最初に、バージョン等が表示され、その次に、プロンプトとカーソルが表示されます。
カーソルに続いて、コマンド等を実行しますが、実行結果があればそれらが表示され、実行が終了すれば、プロンプトとカーソルが表示されます。つまり、プロンプトとカーソルが表示されていれば、「コマンドプロンプト」の入力待ちだという事であり、プロンプトは、コマンドの入力を促す印という事になります。
プロンプトは、初期状態では、カレントディレクリが使用されます。変更することも可能ですが、本ブログでは、変更しないで、説明していきます。「コマンドプロンプト」を最初に実行した状態では、カレントディレクトリは、島以外ユーザのディレクトリが設定されています。例えば、○△□ユーザーのプロンプトは、以下になります。
C:\Users\○△□>
尚、カレントディレクトリとは、現在処理対象になっているフォルダのことを指します。例えば、処理において、ファイル名だけを指定した場合、当該ファイル名は、カレントディレクトリに存在するものだと解釈されます。尚、ディレクトリというのは、フォルダと同じことを意味します。
2)よく使用するDOSコマンド
データ分析において、使用する可能性があるコマンドを簡単に紹介します。DOS環境では、大文字と小文字の区別がありませんので、全て小文字で記載します。カッコ内は、オプションですので指定しなくても構いません。
cd:カレントディレクトリを変更又は表示
cd (フォルダ名)
フォルダ名:指定しないとカレントディレクトリを表示
del:ファイルを削除
del ファイル名
dir:指定したフォルダ情報を表示
dir (フォルダ名)(/w)(/b)(/s)
フォルダ名:指定しないと、カレントディレクトリが初期設定
/w:コンパクトに表示
/b:ファイル名のみ表示
/s:フォルダの下位フォルダも対象
md:新しいフォルダの作成
md フォルダ名
rd:フォルダの削除
rd フォルダ名
ren:ファイル名の変更
ren 現ファイル名 新ファイル名
type:ファイルの中身を表示
type ファイル名
他にもコマンドは沢山ありますが、これだけ分かれば困ることは無いと思います。
3)フォルダの概念
カレントディレクトリを始め、フォルダという名前が何度も出てきましたが、フォルダの概念を理解していますでしょうか。フォルダとは、複数のフォルダやファイルを管理する単位のことです。DOSは、ディスク上でファイル(プログラムやデータ)を管理しますが、膨大な量のファイルを管理するのは、人間が把握できる限界を超えることになります。この為、DOSでは、ファイル群をフォルダとして一塊にして管理します。フォルダ内には、フォルダが含まれる場合もあり、階層的に管理されることになります。Windowsでは、少なくともCディスクがあり、他のディスクが追加されていることもあります。このディスク単位で、フォルダによって階層型に管理されることになります。
「コマンドプロンプト」のカレントディレクトリは、○△□ユーザーの場合、「C:\Users\○△□」ですが、これは、Cディスクの中のUsersというフォルダの中の○△□というフォルダだという事を意味しています。つまり、これは階層構造で示しており、ディスクの区別から、フォルダの階層を順番に示しているという事です。フォルダ名の間には、「\」記号を挟むというのが決まりになっています。
カレントディレクトリは、「cd」コマンドで変更することができます。本ブログでは、Pythonのプロジェクトは、全て、C:\Pythonの下にプロジェクト名のフォルダがあると考えています。例えば、abcという名前のプロジェクトの中のstep1という処理をする時は、最初に、以下のコマンドを実行しておきます。
cd c:\Python\abc\step1
データ分析をする場合、プログラム上で入力するファイル名と出力するファイル名を指定しますが、プログラム上で、xyz.csvというファイル名を指定して入力処理をした場合、c:\Python\abc\step1でプログラムが実行されていれば、xyz.csvというファイルもc:\Python\abc\step1のフォルダ内に存在するという事になります。
c:\Python\abc\step1のフォルダ内に存在しない場合は、当該ファイルを指定する方法は、「絶対パス」で指定する方法と「相対パス」で指定する方法の2種類があります。
例えば、c:\Python\abc\dataに入力ファイルのxyz.csvが存在する場合、c:\Python\abc\step1で実行されているプログラムで当該ファイルを絶対パスで指定するには、階層構造のトップの位置から以下の様に指定します。
c:\Python\abc\data\xyz.csv
もう一つの指定方法は、相対パスと呼び、カレントディレクトリからの位置を指定することになります。カレントディレクトリの下位に存在する場合は、カレントディレクトリに存在するフォルダを順に指定し、ファイルの存在するフォルダの次に「\」を挟んでファイル名を指定します。カレントディレクトリは、「.」ピリオド記号で示されますので、「.」を指定し、「\」を挟んで直下のフォルダ名から指定する方法でも構いません。
1つ上のフォルダは、「..」とピリオドを2つ重ねて指定します。例えば、c:\Python\abc\step1のプログラムからc:\Python\abc\dataにあるxyz.csvを相対パスで指定するには、以下の様に指定します。
..\data\xyz.csv
c:\Python\abc\step1の位置で、「..」が示すフォルダは、c:\Python\abcになりますので、その下のdataフォルダの下にxyz.csvが存在するという意味になります。
プログラミングでは、データの指定は、なるべく相対パスで指定するようにします。そうすれば、ここで示した事例のabcプロジェクトでは、他のパソコンにabcフォルダ以下の全データやプログラムをそっくり移動させたとしても、プログラムを何も修正することなく実行することができます。データ分析では、再現性が重要視されますが、パソコンを変えてもフォルダ位置を変えても同じように処理できるのは重要なことです。再現性と同じように意識して進めてください。
4)DOSコマンドの活用
DOSコマンドの活用方法として、ファイルリストの作成方法を説明します。
プロジェクト毎にフォルダで管理するという説明をしましたが、データ分析を実行すると沢山の処理結果ファイル(csvファイル、図形ファイル等)ができます。そして、そのファイル説明資料を作成することが求められます。
エクスプローラでフォルダを表示させて、確認しながらファイルリストを作成するという事も可能ですが、DOSコマンドを活用することで、スマートにスペルミスのなく簡単に作成することができます。ファイルリストを作成したいフォルダに「cd」で移動し、以下を実行してください。
dir /b >filelist.txt
これは、「dir」コマンドを「/b」オプション(ファイル名のみ表示)を指定して実行し、実行結果を「>」に続けて指定したファイル名で作成するという指定です。この例では、filelist.txtというファイルが作成され、このファイル内にファイル名の一覧が作成されています。この方法は、大変便利ですし、処理結果の確認にもなりますので、ぜひ活用してください。
以上は、「コマンドプロンプト」で使用できますが、「Anaconda Prompt」でも同様に使用できます。また、「cd」コマンドは、IPythonの実行中にも使用できます。テスト中に他のプロジェクト等の状況を確認する際にカレントディレクトリを移動する場合に使用することがあります。
フォルダの概念は、データ分析のプロジェクト管理で非常に重要ですので、理解しておいてください。