【Bash / Ruby / Python3】ファイル読み込み、ファイル書き込みの方法を比較
前書き
自動化Script作成時に、Bash (Shell Script)ではなく、RubyやPython3を用いた方がScriptのメンテナンス負荷が低くなります。自動化Scriptに使用するプログラミング言語変更を目的として、各言語の実装を比較します。
本記事では、「ファイルの読み込み方法」および「ファイルの書き込み方法」を比較します。比較では、実装例および実行例をそれぞれ示します。
Bashではなく、RubyやPython3を使った方が好ましい理由は、以下の記事に記載しています。この記事には、各プログラミング言語の様々な実装(ディレクトリ操作やファイル操作など)を比較した他記事へのリンクを一覧にまとめています。
Bash(Shell Script)からRubyやPythonに乗り換え!頻繁に使う処理を各言語で比較
各言語のVersion
- Bash:GNU bash, バージョン 5.0.3(1)-release
 - Ruby:ruby 2.5.5p157 (2019-03-15 revision 67260)
 - Python:Python 3.7.3
 
比較:ファイルの読み込み・書き込み
自動化スクリプトでは、ファイルの内容を読み込んで一行ずつ処理したり、別ファイルに情報を書き込む機会が多いです。
以下に、各言語の実装例および実行例を示します。
Bashの場合
| 
					 1 2 3 4 5 6 7 8 9 10  | 
						#!/bin/bash # ファイル読み込み:text.txtの内容を一行ずつ表示する。 while read line; do     # 一行ずつ処理する。     echo "${line}" done < text.txt # ファイル書き込み echo "bash.shで追加した文章" >> text.txt  | 
					
Rubyの場合
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21  | 
						#!/usr/bin/env ruby # text.txtの内容を一行ずつ表示する。 # 第二引数は、モード指定(以下、指定の一覧) # r :Read Only # r+:Read + Write (ファイルの読み書き位置は先頭) # w :Write Only (ファイルが無ければ新規作成) # w+:Read + Write (ファイルが無ければ新規作成。有る場合は空にする) # a :Append (追記) # a+:Append + Read (読み込みはファイル先頭から、書き込みはファイル末尾から) File.open("text.txt", "r") do |f|   f.each_line do |line|     # 一行ずつ処理する。     puts(line)   end end # ファイル書き込み File.open("text.txt", "a") do |f|    f.puts("ruby.rbで追加した文章") end  | 
					
Python3の場合
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19  | 
						#!/usr/bin/env python3 # text.txtの内容を一行ずつ表示する。 # 第二引数は、モード指定 (以下、指定の一覧) # r :Read Only # r+:Read + Write (ファイルの読み書き位置は先頭) # w :Write Only (ファイルが無ければ新規作成) # w+:Read + Write (ファイルが無ければ新規作成。有る場合は空にする) # a :Append (追記) # a+:Append + Read (読み込みはファイル先頭から、書き込みはファイル末尾から) # t :テキストモード # b :バイナリモード with open('text.txt', mode='rt') as f:     for line in f:         print(line.strip()) # ファイル書き込み with open('text.txt', mode='at') as f:     f.write("python.pyで追加した文章\n")  | 
					
Bash、Ruby、Python3の実行例
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29  | 
						$ ./bash.sh  サンプルテキスト スクリプトが一行ずつ読み込む Test TEST $ ./ruby.rb  サンプルテキスト スクリプトが一行ずつ読み込む Test TEST bash.shで追加した文章 $ ./python.py  サンプルテキスト スクリプトが一行ずつ読み込む Test TEST bash.shで追加した文章 ruby.rbで追加した文章 (注釈) 最終的なtext.txtの中身を出力 $ cat text.txt  サンプルテキスト スクリプトが一行ずつ読み込む Test TEST bash.shで追加した文章 ruby.rbで追加した文章 python.pyで追加した文章  | 
					
ロシア人と国際結婚した地方エンジニア。
小学〜大学院、就職の全てが新潟。
大学の専攻は福祉工学だったのに、エンジニアとして就職。新卒入社した会社ではOS開発や半導体露光装置ソフトを開発。現在はサーバーサイドエンジニアとして修行中。HR/HM(メタル)とロシア妻が好き。サイトに関するお問い合わせやTwitterフォローは、お気軽にどうぞ。



1件の返信
[…] ファイル読み込み、ファイル書き込み […]