Python の すゝめ

pythonは人の上に人を作らず、人の下に人を作らず

ファイルに出力する

今回はファイルに出力する操作についてです。

 

f:id:numin-yumin:20170822180518p:plain

 

1行目は出力するもののlistです。

 

2行目でファイルを開きます。以前の読み込み操作の時と似ていますが、ファイル名の前に’w’がついています。これはモードを表しており、wは書き込みを意味します。

 

3行目。listから1つずつ取ってきて

 

4行目で書き込みます。\nは改行を表す文字列です。

  • f.write(fruit + '\n')

実行結果は

りんご
みかん
ぶどう
もも
バナナ
きんかん

がoutput/fruit.txtに書き込まれます。

日時操作1 5日前の日付を表示する

f:id:numin-yumin:20170822164736p:plain

 

日付を扱うにはdatetimemというモジュールを使います。また、日時の差を扱うにはdatetimeの中にあるtimedeltaを使います。

 

5行目で指定日を決めます。この時のデータ型はstr型です。よってこの段階ではまだ日時計算ができません。

 

8行目でstr型からdatetime型に変換します。

  • datetime.strptime(str型の日時, '表示されている形式')

 

10行目で時間の差を計算します。datetime型の場合、時間の差を表すtimedelta()を足し引きします。時間の大きさは()内で指定します。

 

12行目。datetime型でもprint()は使えますが、csvへのデータ出力や文章を用いた表示を考えるとstr型に変換しておく方が便利です。

  • datetime.strftime(dadetime型の日付, '表示したい形式')

 

このプログラムを実行すると

2016-10-15

と表示されます。

ファイルの読み込み

今回はcsvファイルから1行ずつデータを取り出す方法についてです。

 

f:id:numin-yumin:20170822162056p:plain

 

1行目はファイルを開く操作です。encoding='utf-8'というのはファイルの読み書きにプラットフォーム依存の文字コードを指定するためのものです。以降は開いたファイルをfとして扱います。ちなみに、先頭にwithをつけるのはclose()を書かずに自動で閉じるためです。

 

2行目。開いたファイルfを1行ずつ操作するためのforループです。

 

3行目。.rstrip()で行の最後の改行を削除、.split('x')でxで文字列を分割します。

 

文字列を分割すると分割した結果がlistで返ってくるので4,5行目のように何番目の要素かということで扱うことができます。

 

6行目表示のためのコマンドです。

 

唐揚げ弁当,400
とんかつ弁当,550
ハンバーグ弁当,500

というファイル'input/menu.csv'に対してこのコードを実行すると

 

唐揚げ弁当は400円

とんかつ弁当は550円

ハンバーグ弁当は500円

 

と表示されます。