ユーザ用ツール

サイト用ツール


プログラミング:python:基本:ファイル処理

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
プログラミング:python:基本:ファイル処理 [2020/07/05 15:04]
sotoyama [基本形]
プログラミング:python:基本:ファイル処理 [2020/07/05 22:45] (現在)
sotoyama [CSVの読み書き]
ライン 3: ライン 3:
 ==== 基本形 ==== ==== 基本形 ====
  
 +基本形2の場合、withブロックの終了時、暗黙的にclose()が実行されため、close()の呼び出しが不要となる。
 <code python> <code python>
-f = open("​ファイル名",​ モード) ​   # ファイルオープン +# 基本形1 
-l = f.readlines() ​                ​# ファイル操作 +f = open("​ファイル名", ​"モード")            # ファイルオープン 
-f.close() ​                        ​# ファイルクローズ+l = f.readlines() ​                          ​# ファイル操作 
 +f.close() ​                                  ​# ファイルクローズ 
 + 
 + 
 +# 基本形2 
 +with open("​ファイル名",​ "​モード"​) as f      # ファイルオープン 
 +    l = f.readlines() ​                      # ファイル操作
 </​code>​ </​code>​
 +
  
 === モード === === モード ===
  
-省略した場合、rtが適用される+省略した場合、"rt"が適用される
  
 ^  モード ​      ​^ ​ 説明 ​                                                 ^ ^  モード ​      ​^ ​ 説明 ​                                                 ^
ライン 22: ライン 30:
 | b             | バイナリファイル。r,​w,​x,​a,​+と組み合わせて指定。 ​       | | b             | バイナリファイル。r,​w,​x,​a,​+と組み合わせて指定。 ​       |
  
 +=== encodingオプション ===
 +
 +PythonはUTF-8をデフォルトとする。UTF-8以外の文字コードを読み込む場合はeoncodingオプションを指定する。
 +
 +^  値          ^  別名 ​                         ^  説明 ​                                       ^
 +| shift_jis ​   | shiftjisi, sjis                | シフトJIS ​                                   |
 +| cp932        | 932, ms932, mskanji, ms-kanji ​ | Windows用のシフトJIS ​                        |
 +| euc-jp ​      | eucjp, ujis, u-jis             | EUC-JP ​                                      |
 +| iso2022_jp ​  | iso2022jp, iso-2022-jp ​        | JIS                                          |
 +
 +<code python>
 +with open("​test.txt",​ encoding='​shift-jis'​) as f:
 +    l = f.readlines()
 +</​code>​
 +
 +=== newlineオプション ===
 +
 +newlineオプションにより、改行コードを指定することができる。
 +
 +^  値        ^  説明 ​                     ^
 +| \r         | CR                         |
 +| \n         | LF                         |
 +| \r\n       | CRLF                       |
 +
 +<code python>
 +with open("​test.txt",​ encoding='​shift-jis',​ newline='​\r\n'​) as f:
 +    l = f.readlines()
 +</​code>​
 +
 +
 +==== ファイル操作メソッド ====
 +
 +^  メソッド ​           ^  説明 ​                                                                            ^
 +| read() ​              | 終端まで読み込む。 ​                                                               |
 +| read(長さ) ​          | 指定した長さだけ読み込む。 ​                                                       |
 +| readline() ​          | 1行読み込む。 ​                                                                    |
 +| readline(長さ) ​      | 指定した長さだけ1行読み込む。 ​                                                    |
 +| readlines() ​         | 1行ずつリストにし、全量読み込む。 ​                                                |
 +| seek(先頭からの位置) | 指定した場所に読み込み位置を移動する。 ​                                           |
 +| tell() ​              | 現在の読み込み位置を取得する。 ​                                                   |
 +| truncate(長さ) ​      | ファイルを指定した長さに切り捨てる。長さ省略時、ファイルの内容を全削除する。 ​     |
 +| write(データ) ​       | データを書き込む。 ​                                                               |
 +| writelines(リスト) ​  | リストで構成されたデータを書き込む。 ​                                             |
 +
 +=== 読み込み ===
 +
 +<code python>
 +# 1行毎にリストにして読み込み
 +with open("​test.txt"​) as f:
 +    l = f.readlines()
 +
 +print(l)
 +
 +# 1行ずつ読み込み
 +with open("​test.txt"​) as f:
 +    while True:
 +        l = f.readline()
 +        print(l)
 +        if not l:
 +            break
 +</​code>​
 +
 +
 +=== 書き込み ===
 +
 +<code python>
 +#​書き込み
 +with open("​test.txt",​ "​w"​) as f:
 +    f.write("​abc\n"​)
 +</​code>​
 +
 +==== CSVの読み書き ====
 +
 +=== 読み込み ===
 +
 +<code python>
 +import csv
 +
 +with open("​test.csv"​) as f:
 +    reader = csv.reader(f)
 +    for l in reader:
 +        print(l)
 +</​code>​
 +
 +
 +=== 書き込み ===
 +
 +<code python>
 +import csv
 +
 +datas = [ [1, 2, 3], [4, 5, 6] ]
 +
 +# 全量書き込み
 +with open("​test1.csv",​ "​w"​) as f:
 +    writer = csv.writer(f)
 +    writer.writerows(datas)
 +
 +# 1行書き込み
 +with open("​test2.csv",​ "​w"​) as f:
 +    writer = csv.writer(f)
 +    for data in datas:
 +        writer.writerow(data)
 +</​code>​
  
プログラミング/python/基本/ファイル処理.1593961477.txt.gz · 最終更新: 2020/07/05 15:04 by sotoyama