【SikuliX】【Python】ファイルの読み書きをしてみよう

GUIを自動で操作するフリーツール:SikuliX ですが、Pythonの構文を使用して、ソースコード上でファイルパス、ファイル、フォルダの操作を行うことができます。

本記事では、パスのコンテンツの「読み込み」「書き込み」の操作で使用できる構文について、まとめます。

スポンサーリンク

ファイルの開閉

ファイルの読み書きの操作の例をまとめます。読み書きのためには、特別なモジュールをインポートする必要はありません。しかし、ファイルの「開」「閉」をしないといけません。

コードサンプル:

f = open(‘ファイル名’, ‘モード’)

~*~本文~*~

f.close()

ここで言う「モード」とは、「読み込み」もしくは「書き込み」を選択するものです。デフォルトは、「読み込み」のモードになっています。オプションとして、エンコーディングの種類も指定できるようです。

ファイルの読み込み

特定のファイルの内容を読み込むときに使用します。サンプル用のファイルは、以下の内容になっています。

filesample_line1
filesample_line2
filesample_line3
filesample_line4
filesample_line5

内容を文字列として読み込む

read()を使用します。このメソッドは文字列として読み込むため、数値を扱いたい場合は int型のような数値に変換する必要があります。

コードサンプル:

file = open(”samplefile.txt”, “r”)

print(file.read())

file.close()

実行結果:

filesample_line1
filesample_line2
filesample_line3
filesample_line4
filesample_line5

内容をリストとして読み込む

readlines()を使用します。改行を含む場合は、改行コードとして「\n」を含みます。

コードサンプル:

file = open(”samplefile.txt”, “r”)

print(file.readlines())

file.close()

実行結果:

[‘filesample_line1\n’, ‘filesample_line2\n’, ‘filesample_line3\n’, ‘filesample_line4\n’, ‘filesample_line5’]

readlines()の他にも、list()を使用する方法もあります。実行結果は、上記と同様です。

コードサンプル:

file = open(”samplefile.txt”, “r”)

print(list(file))

file.close()

内容の1行分のみ読み込む

readline()を使用します。改行を含む場合は、改行コードとして「\n」を含みます。

コードサンプル:

file = open(”samplefile.txt”, “r”)

print(file.readline())

file.close()

実行結果:

filesample_line1

また、readline()を複数回記述すれば2行目以降も読み取ることが可能です。

コードサンプル:

file = open(”samplefile.txt”, “r”)

print(file.readline())
print(file.readline())
print(file.readline())
print(file.readline())
print(file.readline())

file.close()

実行結果:

filesample_line1
filesample_line2
filesample_line3
filesample_line4
filesample_line5

内容をバイナリデータとして読み込む

Windows上でのPythonはテキストファイルとバイナリファイルを区別しています。ファイルをバイナリーデータとして読み込みたい場合は、モードを”rb”と設定してみてください。通常の”r”で読み込むと、テキストファイルとして認識されて行末文字が自動的に少し変更されるようです。読み込む対象がテキストファイルであれば影響ありませんが、画像ファイルやexeファイルであった場合は、ファイル破損の懸念があります。

ファイルの書き込み

書き込みの際は、以下のフォルダー構成を基準に記載していきます。

C(ドライブ)
|–
dir(フォルダー)
        |–  sample.txt(ファイル)

新規作成(上書き)

write()を使用します。同名のファイルが存在しない場合は新規作成され、同名ファイルが存在する場合は上書きされます。追記ではないので、注意してください。

コードサンプル:

file = open(“C:/dir/sample.txt”,”w”)

sample_text = “sample\ntext”

file.write(sample_text)

file.close()

実行結果:

ディレクトリ「C:/dir」に、以下が記述されたsample.txtが作成される。

sample
text

数値の書き込み

write()メソッドでは、数値の書き込みができずにエラーになります。そのため、str()メソッドで文字列として扱うようにします。

コードサンプル:

num = 100

file = open(“C:/dir/sample.txt”, “w”)

file.write(str(num))

file.close()

実行結果:

ディレクトリ「C:/dir」に、以下が記述されたsample.txtが作成される。

100

リストの書き込み

writelines()を使用します。改行したい場合は、改行コード(\n)を入れないと1行に羅列されてしまうので、注意してください。

コードサンプル:

sample_list = [“line1”, “line2”, “\n”, “line3”]

file = open(“C:/dir/sample.txt”, “w”)

file.writelines(sample_list)

file.close()

実行結果:

ディレクトリ「C:/dir」に、以下が記述されたsample.txtが作成される。

line1line2
line3

追記の書き込み

write()で、モード「a」を使用します。こちらも、改行コード(\n)を入れないと最終行に羅列されてしまうので、注意してください。既存のテキストに改行して追加したい場合は、必ず改行コード(\n)を入れるようにしましょう。

コードサンプル:

sample_text = “\nafter input text”

file = open(“C:/dir/sample.txt”, “a”)

file.writelines(sample_text)

file.close()

実行結果:

ディレクトリ「C:/dir」に、以下が記述されたsample.txtが作成される。ただし、既存テキストとして、「original text」の文字列が1行目に記載されているものとします。

original text
after input text

文字列の置き換え

read()、reprace()、write()を組み合わせて記載します。既存のテキストとして、以下の文字列が記載されているとします。

original text 1
original text 2
original text 3

コードサンプル:

file = open(“C:/dir/sample.txt”, “r”)

base_text = file.read()

file.close()

replace_text = base_text.replace(“original”, “replace”)

replace_file = open(“C:/dir/sample.txt”, “w”)

replace_file.write(replace_text)

file.close()

実行結果:

ディレクトリ「C:/dir」に、「original」が「replace」に置き換えられたsample.txtが作成される。

replace text 1
replace text 2
replace text 3

まとめ

今回は、ログの書き出しなどにも利用できるファイルの読み書きについて、記載しました。

SikuliXはPythonの構文が使用できるので、その利点を存分に活用してみましょう。ぜひ色々な使い方を模索してみて下さい。

参考

↓↓パスの指定でエラーとなる場合はこちら↓↓
【SikuliX/Python】パスの指定をしてみよう

スポンサーリンク