ファイルに出力する
今回はファイルに出力する操作についてです。
1行目は出力するもののlistです。
2行目でファイルを開きます。以前の読み込み操作の時と似ていますが、ファイル名の前に’w’がついています。これはモードを表しており、wは書き込みを意味します。
3行目。listから1つずつ取ってきて
4行目で書き込みます。\nは改行を表す文字列です。
- f.write(fruit + '\n')
実行結果は
りんご
みかん
ぶどう
もも
バナナ
きんかん
がoutput/fruit.txtに書き込まれます。
日時操作2 ファイルを読み込んで、指定の5日間の日付を表示
今回はファイル操作と日時操作の応用です。
17行目のようにdatetime型でも範囲の比較やif文が使えます。
結果は
2016/10/15
2016/10/16
2016/10/17
2016/10/18
2016/10/19
です。
日時操作1 5日前の日付を表示する
日付を扱うには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行ずつデータを取り出す方法についてです。
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円
と表示されます。
と