タグ別アーカイブ: File

Python: Microsoft Wordファイル(*.doc)のテキストデータ抽出 – pywin32, win32com

Microsoft Office Wordファイルの検索クローラをPythonで作成する際、表題の通り、*.docからテキストデータに変換する必要がある。本記事ではwin32comライブラリを用いてPythonスクリプトからWordファイルのテキストデータを抽出するスクリプトを紹介する。
(尚、世には多数のOfficeファイルコンバーターが有るので、このソースを使うことが最適とは限らない)

続きを読む

Python: Microsoft PowerPointファイル(*.ppt)のテキストデータ抽出 – pywin32, win32com

Microsoft Office PowerPointファイルの検索クローラをPythonで作成する際、表題の通り、*.pptからテキストデータに変換する必要がある。本記事ではwin32comライブラリを用いてPythonスクリプトからスライド中の各シェイプボックスからテキストデータを抽出するスクリプトを紹介する。
(尚、世には多数のOfficeファイルコンバーターが有るので、このソースを使うことが最適とは限らない)

続きを読む

Android: リソースの画像ファイルの拡大・縮小描画 – drawBitmap()

画像ファイルの表示(拡大・縮小)

表示する画像はEclipse上でAndroidプロジェクト作成時に自動的に作成されるIcon画像です。
画像パス:プロジェクト名/res/drawable-hdpi/icon.png

resフォルダ以下に置かれたリソースはコンパイル時にプログラムに組み込まれます。その画像リソースを読み込む際は、

を用います。読み込んだBitmapインスタンスを描画するには、Canvasクラスのインスタンスメソッドである

を使います。なお、拡大・縮小する場合も上記のdrawBitmapをオーバーロードしたものを使います。

今回のサンプルプログラムでは、元画像の幅と高さを2倍したイメージを描画しています。

ImageSp.java

ImageView.java

AIR: テキストファイルに書き込み – openAsync()、writeMultiByte()

AIR: テキストファイルに書き込み

AIRコンポーネントではローカルのファイルにアクセスすることができます。下記のコードは日本語を含むマルチバイトの文字列をテキストファイルに書き込む処理をする。

続きを読む

AIR: テキストファイルを非同期に読み込む – openAsync()、readMultiByte()

AIR: テキストファイル読み込みの実行結果

AIRコンポーネントではローカルのファイルにアクセスすることができます。下記のコードは日本語を含むマルチバイトのテキストファイルを読み込み、画面い表示する処理を行う。

続きを読む

Python: ファイル読み込み時の例外の扱い例 – try、except、else、finallyブロック

ファイルのパスや名前のミス、パーミッションの権限が無い等が原因でファイルを読み込めない場合がある。そのような場合、すなわち例外が発生した際にそこで処理を中断して、発生した例外に合わせた処理ブロックにジャンプする構文が、try:~except Error:~構文。

今回は、コマンドライン引数で英文テキストファイル名を指定し、スクリプト内でファイル内容を読み込み、単語数をカウントし出力するスクリプトを以って、オプションのelse、finallyブロックを含めた例外ブロックの扱いを確認する。
ただし、ここでの「単語」とは、簡単に考える為、1つの空白文字で区切られた文字列とする。

ソースコード

コードの説明

tryブロック

まず、例外を発生させる恐れのある行は、tryブロック内に書く。

ここで発生する可能性がある例外はコマンドライン引数が格納されているリストへのアクセス部分であるsys.argv[1]。[]演算子で存在しない要素を参照する例外。また、ファイルを開くopen(arg, ‘r’)も冒頭の理由で例外発生の可能性もある。

exceptブロック

exceptブロックは、tryブロックで例外が発生した場合にのみ実行されるブロックです。その為、例外が発生しない場合は実行されない。

発生する可能性のある例外のタイプ毎にexceptブロックを書けば、そのタイプ毎の例外への対処処理を書くことが出来る。

elseブロック (オプション)

elseブロックは全てのexceptブロックの後に書く(任意なので書かなくても構わない)。

elseブロックはtryブロックで例外が発生しなかった場合にのみ実行されるブロック。今回は、ファイルの読み込みとクローズに使用している。

finallyブロック (オプション)

finallyブロックはtryブロックで例外が発生するしないに関わらず実行されるブロック(任意なので書かなくても構わない)。

実行結果

読み込むテキストファイルを以下のaLine.txtとする。
aLine.txt

コマンドラインで適切な引数を与えた場合

存在しないファイル名を引数を与えた場合

コマンドライン引数を与えなかった場合

例外オブジェクト名をpython処理系に聞いてみる

どんなメソッドや関数、演算子が、どのような例外を投げるのか予測が付かない場合もある。そんな場合、一旦はスクリプトを実行してエラーを確認する。
SyntaxError: invalid syntax以外のエラーがある場合、例えば、

のような場合は、最終行の行頭のIndexErrorが例外名となる。

何でも例外任せにしていいの?

計算量が増える為、良くない。今プログラムのコマンドライン引数の確認を、
if len(sys.argv) != 2: ホニャララ
とすると整数の比較ですむが、例外のキャッチに任せると、例外インスタンスを生成し送出という計算量の大きい処理が掛かる。ネットワーク接続やファイル読み書きなどのIOでは例外はイベント駆動で発生する為、例外制御が必須ですが、それ以外では使用しない。

ドキュメント

Rで統計: CSVファイルの読み込み – read.csv()メソッド

読み込むCSVファイルは2007年度のセリーグの打撃成績の順位です。

参考:2007年度 セントラル・リーグ 個人打撃成績(規定打席以上)

batting2007.csv

プロンプト

read.csv()メソッドでCSVファイルを読み込み、そのデータフレームをbatting変数に格納しています。

実行結果を見ると、ファイル1行目のフィールド(列)名が変数名を表し、2行目以降がテーブル本体を表していることが分かります。これによって、例えば安打の列を抽出したい場合は、batting$安打と指定すればOKです。

ただ、毎回々々「batting$安打」と指定するのは億劫ですので、以下のコマンドで簡略化します。

attach()関数によってワークスペースにオブジェクトが保存され、データフレーム内の変数名のみでのアクセスが可能になります。

read.csv()メソッドのheader引数にFALSEを指定した場合

read.csv()メソッドはデフォルトでheader引数にTRUEが指定されていますが、以下のようにFALSE(必ず大文字)を指定することも出来ます。その場合の動作は以下のようになります。

ファイル1行目の列名がテーブル本体のデータセットに組み込まれていることが分かります。この場合の列へのアクセスは上の実行結果から、batting$V3と分かります。フィールド(列)名(一行目)を省略したCSVファイルを読み込みたい場合にはこのオプション引数を指定します。