ユーザ用ツール

サイト用ツール


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

差分

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

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

次のリビジョン
前のリビジョン
プログラミング:python:基本:ファイル処理 [2020/07/05 14:51]
sotoyama 作成
プログラミング:python:基本:ファイル処理 [2020/07/05 22:45] (現在)
sotoyama [CSVの読み書き]
ライン 1: ライン 1:
 ===== ファイル処理 ===== ===== ファイル処理 =====
  
 +==== 基本形 ====
  
 +基本形2の場合、withブロックの終了時、暗黙的にclose()が実行されため、close()の呼び出しが不要となる。
 +<code python>
 +# 基本形1
 +f = open("​ファイル名",​ "​モード"​) ​           # ファイルオープン
 +l = f.readlines() ​                          # ファイル操作
 +f.close() ​                                  # ファイルクローズ
  
  
 +# 基本形2
 +with open("​ファイル名",​ "​モード"​) as f      # ファイルオープン
 +    l = f.readlines() ​                      # ファイル操作
 +</​code>​
  
  
 +=== モード ===
  
 +省略した場合、"​rt"​が適用される
  
 +^  モード ​      ​^ ​ 説明 ​                                                 ^
 +| r             | 読み込み。 ​                                            |
 +| w             | 書き込み。 ​                                            |
 +| x             | 新規作成。ファイルが存在する場合、エラーとなる。 ​      |
 +| a             | 追記書き込み。 ​                                        |
 +| +             | 読み書き両方。 ​                                        |
 +| t             | テキストファイル。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> <code python>
-# 1行コメント +# 1行毎にリスにして読み込み 
-a = 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>​
  
-==== 命令文の終了 ==== 
  
-命令文の終了はセミコロン(;​)を使用する。+=== 書き込み === 
 <code python> <code python>
-a = 1; b = 2; c = 3; +#書き込み 
-d = 4                   1行に1命令の場合、省略可能+with open("​test.txt",​ "​w"​) as f: 
 +    f.write("​abc\n"​)
 </​code>​ </​code>​
  
-==== 演算子 ​====+==== CSVの読み書き ​====
  
-^  分類 ​        ​^ ​ 種類 ​                         ^  演算子 ​        ^ 使用例 ​                 ^ +=== 読み込み ​===
-| 代入演算子 ​   | 加算 ​                          | +             | a +b                  | +
-| :::           | 減算 ​                          | -             | a -b                  | +
-| :::           | 乗算 ​                          | *             | a *b                  | +
-| :::           | 除算 ​                          | /=              | a /= b                  | +
-| :::           | 除算(小数点以下切り捨て) ​    | %%//​=%% ​        | %%a //= b%%             | +
-| :::           | 剰余 ​                          | %=              | a %= b                  | +
-| :::           | べき乗 ​                        | %%**=%% ​        | %%a **= b%%             | +
-| 比較演算子 ​   | 超過 ​                          | >               | a > b                   | +
-| :::           | 未満 ​                          | <               | a < b                   | +
-| :::           | 以上 ​                          | >=              | a >= b                  | +
-| :::           | 以下 ​                          | %%<​=%% ​         | a %%<=%% b              | +
-| :::           | 同値 ​                          | ==              | a == b                  | +
-| :::           | 異なる値 ​                      | !=              | a != b                  | +
-| 論理演算子 ​   | 論理積 ​                        | %%and%% ​        | (a > b) %%and%% (b < c) | +
-| :::           | 論理和 ​                        | %%or%% ​         | (a > b) %%or%% (b < c)  | +
-| :::           | 否定 ​                          | not             | not(a < b)              | +
-| ビット演算子 ​ | 論理積 ​                        | %%&​%% ​          | a %%&%% b               | +
-| :::           | 論理和 ​                        | %%|%%           | a %%|%% b               | +
-| :::           | 排他的論理和 ​                  | %%^%%           | a %%^%% b               | +
-| :::           | ビット反転 ​                    | ~               | ~a                      | +
-| :::           | 左ビットシフト ​                | %%<<​%% ​         | a %%<<​%% 1              | +
-| :::           | 右ビットシフト ​                | %%>>​%% ​         | a %%>>​%% 1              |+
  
 +<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/基本/ファイル処理.1593960690.txt.gz · 最終更新: 2020/07/05 14:51 by sotoyama