Python - 文法 - ファイル入出力 - 入力

クラウディア 
1. 概要
2. 入力
3. エンコード指定

1. 概要

 ファイルからの入力の基本的な部分です。  本ページは、下記のサイトを参考にさせていただきました。
Python で json ファイル読み書き(UTF-8) #JSON」
「入力と出力

2. 入力

 単純な、テキストファイルを1行ずつ読んでいくとして・・・。

いろはにほへと
ちりぬるを
わかよたれそ
つねならむ
うゐのおくやま
けふこえて
あさきゆめみし
ゑひもせす
 てな、テキストファイルが、「./text01.txt」という名前で存在するとします(実際に存在していますが・・・)。  1行ずつ読んで、奇数行のみを出力するとすれば、下記のようなソースでよいのかな・・・。

import os

file_name = os.path.dirname(__file__) + "/text01.txt"

num = 1

with open(file_name, 'r') as file:
  for line in file:
    if (num % 2):
      print(line.rstrip())

    num += 1
 10行目の「line.rstrip()」は、「python」の入力は、改行もきっちりとりこむし、「print」が、改行付きで出力するものだから、1行分空白行が空くのを防いでいます。  実行すると下記の結果が得られます。

いろはにほへと
わかよたれそ
うゐのおくやま
あさきゆめみし

3. エンコード指定

 「FreeBSD」や「Linux」でやっていれば、エンコードは、「UTF-8」なので、意識することはないのですが。  同じファイルを、「Windows」上で、動かそうとすると、デフォルトのエンコードが、「Shift-JIS」なので、読込時にこけちゃったりします。  「open()」時に、エンコードを指定するようにすれば、解決します。  前項のソースで言えば。

with open(file_name, 'r', encoding='utf-8') as file:
 になります。
earthcar(アースカー)