ファイルを連結して標準出力に出力するPythonスクリプト
catというコマンドは、引数に渡されたファイル(複数可)を渡された順に結合して標準出力に書き出す。実際には色々なオプションで挙動が変えられるのだが、今回はPythonの練習の1つとして、結合する機能を持った関数と、これを利用してcatコマンドの基本的な動作を行うためのスクリプトを作成した。処理としてはあまり難しいことはしていない。
(2015/1/6)ドキュメントのリンク先を修正し、サンプルコードもPython 3で動作することなどを目的に書き直した。
#! /usr/bin/python # -*- coding: utf-8 -*- # 引数に指定されたファイルを連結して標準出力に出力 from __future__ import print_function import locale import sys import os locale.setlocale (locale.LC_ALL, '') bufsize = 512 fd_out = sys.stdout.fileno () infiles = sys.argv[1:] for infile in infiles: try: with open (infile, 'rb') as f_in: # データを少しずつ読み込んでそのまま出力ファイルへ書き込む while True: try: data = f_in.read (bufsize) except IOError as e: sys.exit ('Could not read from file "{0}" [1]: {2}'.format (infile, e.errno, e.strerror)) if not data: break os.write (fd_out, data) except IOError as e: sys.exit ('Could not open file "{0}" [1]: {2}'.format (infile, e.errno, e.strerror))
実際に実行してみると、出力されるファイルは、同じようにしてcatコマンドで結合したのと同じものになった。
(2008/6/22)引数の処理を修正
参考URL: