Pythonを使って、テキストやJSON、YAMLといったさまざまなファイルの読み書きに関してピックアップしてみました。
調べてみてわかったことは、ほとんどのモジュールが書き込みと読み込みで同じような書き方になっていました。
そのため、数種類の読み書きはありますが覚えてしまえば、直感で読み書き可能になります。
この記事では、Pythonで利用できるモジュールの読み書きについて解説しています。
テキストファイルの使い方
Pythonを使ったテキストファイルの読み込み方法には、3つあります。
書き込みについても、新規作成や上書きなのか先頭行に追加したいのかによって書き方が変わってきます。
ここで紹介するのは、読み込みはread関数で書き込みはwrite関数になります。
他にもファイルの操作やwith構文について詳しく知りたい場合は、この記事もご確認ください。
-
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ファイルの使い方
PythonでCSVファイルを操作するには、新たにモジュールをインストールすることなく標準の機能で操作することができます。
こちらで読み込みと書き込みについて紹介する方法は、DictReaderとDictWriter関数を使った方法になります。
他の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ファイルを使い方
PythonでPDFを操作するライブラリで、PyPDF2やpdfminer、pdfrwは開発が止まっています。
下記記事では、この3つ以外のdjango-wkhtmltopdfやPdfKit、ReportLabについて解説しています。
-
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ファイルを使い方
PythonでXMLを操作するモジュールは、3つあります。
1つ目は、軽量化のminidomです。
2つ目は、xmltodictという辞書化したデータを取り扱うモジュールです。
3つ目は、defusedxmlというモジュールで、XMLのセキュリティ周りを重点においているモジュールです。
-
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ファイルを使い方
PythonでINIファイルを操作するには、標準モジュールのConfigParserを利用します。
このINIファイルですが、WindowsのINIファイルとは別モノになりますので注意してください。
-
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ファイルの使い方
PythonでYAMLファイルを操作するには、PyYAMLを利用します。
使い方については、特にクセもなく利用することができます。
詳しく知りたい方は、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ファイルの使い方
PythonでJSONファイルを操作するには、simplejsonのモジュールを利用した方が良いです。
Python標準のJSONモジュールもありますが、simplejsonをオススメするために、ここではsimplejsonで読み込みと書き込みを記載します。
Python標準のモジュールやGeoJSONについて知りたい方は、こちらの記事をご覧ください。
-
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ファイルはINIファイルの上位互換で、INIファイルでできなかった階層処理を行うことができます。
INIファイルの場合は、なんちゃって階層だったのですが、仕様も決められて設定ファイルとして結構使えると判断しています。
TOMLの書き方やPythonの使い方について、この記事で詳しく説明していますので興味があればご覧ください。
-
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でTEXTを操作!読み込みから書き込みまでの基本
Pythonを使ったテキストを操作するために、読み込みから書き込みといった使い方を解説します。 読み込みに関しては、1行ずつ読み込んだり読み込んだファイルをリスト化したりといった手法もサンプルコードを元に説明しています。 他にもPython ...続きを見る
今後の人生を豊かにする為にキャリアアップのステップとして、自分への投資をしてみませんか?