Python

Pythonでいろんな種類のファイルを操作方法を解説

2021年9月15日

Pythonファイル操作

Pythonを使って、テキストやJSON、YAMLといったさまざまなファイルの読み書きに関してピックアップしてみました。

調べてみてわかったことは、ほとんどのモジュールが書き込みと読み込みで同じような書き方になっていました。

そのため、数種類の読み書きはありますが覚えてしまえば、直感で読み書き可能になります。

この記事では、Pythonで利用できるモジュールの読み書きについて解説しています。

テキストファイルの使い方

テキストファイルの使い方

Pythonを使ったテキストファイルの読み込み方法には、3つあります。

書き込みについても、新規作成や上書きなのか先頭行に追加したいのかによって書き方が変わってきます。

ここで紹介するのは、読み込みはread関数で書き込みはwrite関数になります。

他にもファイルの操作やwith構文について詳しく知りたい場合は、この記事もご確認ください。

Pythonでテキストファイルの操作
PythonでTEXTを操作!読み込みから書き込みまでの基本
Pythonを使ったテキストを操作するために、読み込みから書き込みといった使い方を解説します。 読み込みに関しては、1行ずつ読み込んだり読み込んだファイルをリスト化したりといった手法もサンプルコードを元に説明しています。 他にもPython ...

続きを見る

テキストファイルの読み込み

read関数は、読み込んだファイルを文字列として返します。

with open('./sample.txt') as f:
    print(f.read()) # sampleファイルの結果が表示される

テキストファイルの書き込み

write関数は、文字を書き込みます。

しかし、open関数のオプションによって新規なのか追記なのか変わってきます。

今回は、新規および上書きオプションのwを使います。

with open('./write.txt', 'w') as f:
    f.write('テストです' + '\n') # write.txtにテストですが書き込まれる

CSVファイルの使い方

CSVの使い方

PythonでCSVファイルを操作するには、新たにモジュールをインストールすることなく標準の機能で操作することができます。

こちらで読み込みと書き込みについて紹介する方法は、DictReaderとDictWriter関数を使った方法になります。

他のCSVの読み書きについては、この記事をご確認ください。

Python CSV ファイルの使い方
Pythonを使ったCSVファイルの操作!読み込みと書き込みの基本的な書き方を解説
PythonのCSVファイルの操作は、基本的には標準の機能で対応することができます。 他の言語だと、ファイルを読み込んでカンマを分割してといった流れで処理をする場合がありました。 しかし、PythonではそんなことをせずにCSVファイルを操 ...

続きを見る

CSVファイルの読み込み

CSVファイルをDicReaderで読み込むには、csvをインポートする必要があります。

オープンした、ファイルのデータをDictReaderの引数に指定し、fieldnamesにてヘッダーを指定します。

そうすることで辞書型のデータとして取得することが可能になります。

import csv

with open('sample.csv') as f:
    header = ['商品名', '単価', '数量']
    data = csv.DictReader(f fieldnames=header)
    for line in data:
        print(line)

CSVファイルの書き込み

書き込みでもCSV読み込みと同様に、csvをインポートしてopenでファイルを開きます。

DictWriterにopenで読み込んだ値を引数にセットして、fieldnamesでヘッダーをセットします。

書き込みではfieldnamesは必須項目になり、省略するとエラーになります。

import csv

with open('sample_write.csv', 'w') as f:

    rows = [
        {'商品名': 'テスト 商品', '単価': 1000, '数量': 1}
    ]
    w = csv.DictWriter(f, delimiter=' ', fieldnames=['商品名', '単価', '数量'])
    w.writerows(rows)

PDFファイルを使い方

PDFファイルの使い方

PythonでPDFを操作するライブラリで、PyPDF2やpdfminer、pdfrwは開発が止まっています。

下記記事では、この3つ以外のdjango-wkhtmltopdfやPdfKit、ReportLabについて解説しています。

Pythonを使ったPDF操作
Pythonを使ったPDF操作!さまざまなモジュールの使い方を解説
PythonでPDFの操作を行うライブラリについて解説してます。 今回ご紹介するライブラリは、django-wkhtmltopdfやPdfKit、WeasyPrintといったHTMLからPDFに変換するモノです。 他にもコードからPDFに変 ...

続きを見る

PDFファイルの読み込み

PDFの読み込みとしてpdfrwを使っていますが、開発が止まっているため細かく解説はしません。

下記のプログラムは、pdfrwで読み込んで、ReportLabを使って書き込みを行う処理をしています。

from pdfrw import PdfReader
from pdfrw.buildxobj import pagexobj
from pdfrw.toreportlab import makerl
from reportlab.pdfgen import canvas

cc = canvas.Canvas('reportlab.pdf')
pdf = PdfReader('reportlab.pdf')
page = pdf.pages[0]

pp = pagexobj(page)
rl_obj = makerl(cc, pp)
cc.doForm(rl_obj)

cc.drawString(100, 200, 'hoge')
cc.showPage()
cc.save()

PDFファイルの書き込み

PDFファイルの書き込みには、HTMLからPDF化を行う方法とPythonのコードから直接生成する方法があります。

ここではHTMからPDFに変換を行うPdfKitを使った方法になります。

import pdfkit

pdfkit.from_file('./sample.html', 'out.pdf')

HTMLからPDF化を行うコードは、この1行になります。

HTMLも下記になります。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>PDF作成</title>
</head>
<body>
    <h1>PdfKitでPDFを作成します</h1>
</body>
</html>

XMLファイルを使い方

XMLの使い方

PythonでXMLを操作するモジュールは、3つあります。

1つ目は、軽量化のminidomです。

2つ目は、xmltodictという辞書化したデータを取り扱うモジュールです。

3つ目は、defusedxmlというモジュールで、XMLのセキュリティ周りを重点においているモジュールです。

Python XMLでDOM操作
PythonでXMLを使ったDOMを操作!3つのライブラリの使い方を解説
Pythonを使ったXMLの操作について解説します。 JavaとかでXMLをよく使うのがTomcatサーバの設定とかで利用するのですが、PythonでもXMLの操作ができます。 操作できるライブラリについて、この記事では紹介します。 他にも ...

続きを見る

XMLファイルの読み込み

読み込みに関しては、minidomのtoxml関数を使って、XMLを文字列として返す処理です。

読み込むXMLは下記なります。

<?xml version="1.0" encoding="UTF-8" ?>
<Python>
    <Version>Python3.9.0</Version>
</Python>

これを読み込むとコードは下記なります。

from xml.dom.minidom import parse

doc = parse('./sample.xml').toxml()
print(doc)

XMLファイルの書き込み

書き込みについてのコードは下記になります。

from xml.dom import getDOMImplementation

with open('./write_sample.xml', 'w') as f:
    impl = getDOMImplementation()
    doc = impl.createDocument(None, '会社', None)
    root = doc.documentElement
    el = doc.createElement('会社名')
    txt = doc.createTextNode('サンプル会社')
    attr = doc.createAttribute('since')
    attr.value = '2021-09-09'
    el.setAttributeNode(attr)
    el.appendChild(txt)
    root.appendChild(el)
    doc.writexml(writer=f, encoding='UTF-8', newl='\n', addindent='\t')

実際に書き込まれたXMLの内容が下記になります。

<?xml version="1.0" encoding="UTF-8"?>
<会社>
	<会社名 since="2021-09-09">サンプル会社</会社名>
</会社>

INIファイルを使い方

INIファイルの使い方

PythonでINIファイルを操作するには、標準モジュールのConfigParserを利用します。

このINIファイルですが、WindowsのINIファイルとは別モノになりますので注意してください。

PythonでConfigParserの使い方
PythonのConfigParserを使ったINIファイルの操作
PythonでINIファイルを操作してみます。 ここでいうINIファイルはWindowsのINIファイルではなく、あくまでの似た構造のINIファイルの操作になります。 PythonでINIファイルを操作するために、ConfigParserを ...

続きを見る

INIファイルの読み込み

INIファイルを読み込むには、read関数を使います。

読み込むだけでは微妙なので、セクションを取得した書き方を紹介します。

読み込むINIファイルが下記になります。

; 設定
[settings]
title=サンプルです
description="このデータサンプルです\nサンプルスペース( )"
language=ja

; オプション
[options]
mobile=off

下記がコードです。

import configparser

config = configparser.ConfigParser()
config.read('./sample.ini')

print(config.sections()) # 結果 ['settings', 'options']

readで読み込むことで、sections関数で値を取得することができます。

INIファイルの書き込み

INIファイルを新規で作成して書き込むコードが、下記になります。

import configparser

config = configparser.ConfigParser()
config['setting'] = {'language': 'jp', 'max_count': 100}
config['admin'] = {}
config['admin']['user_id'] = 'admin'
config['admin']['password'] = 'admin'
config['admin']['role'] = 'admin'

with open('./write.ini', 'w') as f:
    config.write(f)

YAMLファイルの使い方

YAMLファイルの使い方

PythonでYAMLファイルを操作するには、PyYAMLを利用します。

使い方については、特にクセもなく利用することができます。

詳しく知りたい方は、YAMLの使い方を解説した記事をご覧ください。

PythonによるYAMLの使い方
Pythonを使ったYAMLの使い方を解説
Pythonを使ってYAMLの使い方について解説します。 YAMLは、DockerやKubernetesといったコンテナオーケストレーションツールで利用されています。 書き方や使い方がわからない方に対して、PyYAMLの使い方を含め解説して ...

続きを見る

YAMLの読み込み

YAMLファイルを読み込むには、open関数とyamlモジュールを利用します。

読み込むYAMLファイルは下記になります。

settings:
  language: jp

option:
  account:
    max: 100
    min: 50

下記が読み込むためのコードになります。

import yaml

with open('sample.yaml', 'r') as f:
    data = yaml.safe_load(f)
    print(data)

YAMLの書き込み

YAMLを書き込むには、下記のように行います。

import yaml

with open('write_sample.yaml', 'w') as f:
    data = {
        'setting': {
            'language': 'jp'
        }
    }

    yaml.dump(data, f)

open関数でwを指定して、yaml.dumpで書き込むことができます。

JSONファイルの使い方

JSONファイルの使い方

PythonでJSONファイルを操作するには、simplejsonのモジュールを利用した方が良いです。

Python標準のJSONモジュールもありますが、simplejsonをオススメするために、ここではsimplejsonで読み込みと書き込みを記載します。

Python標準のモジュールやGeoJSONについて知りたい方は、こちらの記事をご覧ください。

PythonによるJSONファイルの操作
Pythonを使ったJSONファイルを操作!読み込みから書き込みまでの基本操作を解説
Pythonを使ったJSONの操作ついて解説します。 この記事では、Python標準のjsonモジュールとGeoJSONについて説明しています。 simplejsonについてはPython標準のモジュールと使い方は同じなので、興味がある方は ...

続きを見る

JSONの読み込み

simplejsonを使ったJSONファイルの読み込み方は下記になります。

import simplejson

with open('./sample.json') as f:
    data = simplejson.load(f)
    print(data)

読み込んでいるファイルは、下記になります。

{
  "accounts": [
    {
      "name": "太郎",
      "age": 20
    },
    {
      "name": "次郎",
      "age": 19
    }
  ]
}

結果は下記になります。

{'accounts': [{'name': '太郎', 'age': 20}, {'name': '次郎', 'age': 19}]}

JSONの書き込み

JSONの書き込みついては下記になりますが、今回はdumpを使っていません。

dumpについての書き込みついては、こちらのJSONの使い方の記事をご確認ください。

import simplejson

data = {
    'list': [
        {'name': '太郎'},
        {'name': '次郎'},
    ]
}

with open('write_sample.json', 'w') as f:
    dec = simplejson.dumps(data, ensure_ascii=False, indent=2)
    f.write(dec)

書き込まれた内容は、下記になります。

{
  "list": [
    {
      "name": "太郎"
    },
    {
      "name": "次郎"
    }
  ]
}

TOMLファイルの使い方

TOMLファイルの使い方

TOMLファイルはINIファイルの上位互換で、INIファイルでできなかった階層処理を行うことができます。

INIファイルの場合は、なんちゃって階層だったのですが、仕様も決められて設定ファイルとして結構使えると判断しています。

TOMLの書き方やPythonの使い方について、この記事で詳しく説明していますので興味があればご覧ください。

Pythonを使ったTOMLの操作
Pythonを使ったTOMLの使い方とTOMLの書き方を詳しく解説
アプリケーションを作る際に設定ファイルを作成しますが、みなさんはどのような形式で作成していますか? INIファイルですか? それともJSONやYAMLファイルでしょうか? TOMLは人が読みやすいように作られているので、直感的にJSONやY ...

続きを見る

TOMLの読み込み

下記のTOMLファイルを読み込みます。

app = "サンプル"
version = "1.0"

[setting]
env = "dev"
    [web]
        type = "nginx"
        host = "localhost"
        port = 5000
    [db]
        type = "pg"
        host = "localhost"
        port = 5432

[master]
account = "admin"
password = "admin"

TOMLとして読み込むには、tomlのload関数を利用します。

import toml

with open('./sample.toml') as f:
    obj = toml.load(f)
    print(obj)

TOMLの書き込み

書き込み方法について2つありますが、今回はdumpを利用した書き込みについて書きます。

import toml.encoder

with open('write_sample.toml', 'w') as f:
    data = {
        'app': 'テスト書き込み'
    }

    toml.dump(data, f)

書き込むためには、toml.dumpを使います。

第1引数がオブジェクトで、第2引数がファイルストリームになります。

書き込まれたファイルが下記になります。

app = "テスト書き込み"

EXCELファイルの使い方

PythonではExcelの操作を行うことができます。

今回の読み込みと書き込みでは、OpenPyXLのライブラリを利用します。

Pythonのエクセルを操作できるライブラリについて知りたい方は、こちらの記事もご確認ください。

エクセルモジュール
Pythonでエクセルを操作できるライブラリを解説
Pythonでエクセルを操作するためのライブラリを解説します。 RPAでエクセルを操作するのにめんどくさいことが発生しており、カンタンにエクセルを操作できないか調べていました。 GolangやJavaとかでコンパイルしたプログラムを配るのも ...

続きを見る

EXCELの読み込み

エクセルファイルを読み込むには、load_workbookを使います。

from openpyxl import Workbook, load_workbook

file_name = 'sample.xlsx'
wb = load_workbook(file_name)

読み込んだエクセルから、さらにシートやセルといったデータを読み込むことも可能です。

EXCELの書き込み

ここでは、ブックの作成をします。

from openpyxl import Workbook

file_name = 'sample.xlsx'
wb = Workbook()

wb.save(file_name)

save関数でファイルの書き込みを行なっています。

まとめ

Pythonでファイル操作ができる、下記の種類について解説してきました。

操作可能ファイル

  • テキストファイル
  • CSVファイル
  • PDFファイル
  • XMLファイル
  • INIファイル
  • YAMLファイル
  • TOMLファイル
  • EXCELファイル

他にも、ワードやパワーポインタといったさまざまなファイルの操作も可能です。

ファイルの読み書きって頻繁に使うものではなかったので。結構忘れがちになったりするのでまとめてみました。

この中で重要なのは、テキストファイルがどのモジュールでも利用する書き方なので、理解できていない場合はテキストファイルの読み書きだけは理解するようにしましょう。

Pythonでテキストファイルの操作
PythonでTEXTを操作!読み込みから書き込みまでの基本
Pythonを使ったテキストを操作するために、読み込みから書き込みといった使い方を解説します。 読み込みに関しては、1行ずつ読み込んだり読み込んだファイルをリスト化したりといった手法もサンプルコードを元に説明しています。 他にもPython ...

続きを見る

Udemyへ

今後の人生を豊かにする為にキャリアアップのステップとして、自分への投資をしてみませんか?

-Python
-,