Pythonで作った多次元のリストを他のプログラミング言語で使いたい。
こんなときがありますよね。そのようなときはPythonからリストをテキストファイルに書き込んで、そのテキストファイルを他の言語で読み込むという方法があります。
ただ、リストが1次元の時は困らないけど、2次元リストや3次元リストなどの多次元のリストを書き込むとなると困ってしまう人もいるのではないでしょうか。
今回は、Python内の多次元配列をテキストファイルに書き込む方法を紹介します。
2次元のリストをテキストファイルに書き込む
次のようにすることで2次元のリストをテキストファイルに書き込むことができます。
list_data = [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]
list_string = str(list_data)
f = open('output.txt', 'w', encoding='UTF-8')
f.write(list_string)
f.close()
コードの内容を簡単に説明します。まずは1行目です。
list_data = [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]
list_string = str(list_data)
f = open('output.txt', 'w', encoding='UTF-8')
f.write(list_string)
f.close()
1行目のlist_dataという変数は、テキストファイルに書き込みたい2次元のリスト入れておくための変数です。
list_data = [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]
list_string = str(list_data)
f = open('output.txt', 'w', encoding='UTF-8')
f.write(list_string)
f.close()
2次元リストはlist型という型になっています。f.write()メソッドを使ってファイルに書き込むには、str型に変換する必要があります。2行目のlist_stringという変数は、list型からstr型に変換した2次元配列を入れておく変数になっています。
次は3行目です。
list_data = [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]
list_string = str(list_data)
f = open('output.txt', 'w', encoding='UTF-8')
f.write(list_string)
f.close()
3行目では書き込み先テキストファイルのパスを指定しています。(厳密には他のこともやっています)「output.txt」の部分を変更することで、好きな場所の好きな名前のファイルに書き込むことができます。
3次元以上のリストをテキストファイルに書き込む
3次元以上のリストを扱うことはあまりないかもしれませんが、3次元以上のリストをテキストファイルに書き込む必要があっても心配はいりません。
2次元リストの時と全く同じようなコードで実現できます。
[[['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']], [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]]
list_string = str(list_data)
f = open('output.txt', 'w', encoding='UTF-8')
f.write(list_string)
f.close()
上の例は3次元リストをテキストファイルに書き込む例ですが、4次元でも5次元でも同じようにできます。
書き込み先のテキストファイルのパスについて
3行目のopen関数でリストを書き込むファイルのパスを指定します。このパスには相対パスと絶対パスのどちらを指定することもできます。
テキストファイルのパスを相対パスで指定する際には次のような注意点があります。
相対パスの基準になるディレクトリは、ターミナルでPythonファイルを実行した時点のカレントディレクトリになる
言い換えると、相対パスの基準になるディレクトリはそのPythonファイルではないということになります。
わかりづらいと思うので1つ例を出してみます。
例えば、ターミナルから次のような条件でPythonファイルを実行したとします。
- カレントディレクトリは /Users/konnsuki
- Pythonファイルがあるディレクトリは/Users/konnsuki/programs
- open(‘output.txt’, ‘w’, encoding=’UTF-8′)でファイルに書き込む
/Users/konnsuki/programsにあるPythonファイルでopen(‘output.txt’, ‘w’, encoding=’UTF-8′)を実行しているので、もしかすると/Users/konnsuki/programs/output.txtに書き込まれると思ってしまうかもしれません。
しかし、実際には/Users/konnsuki/output.txtに書き込まれます。少しだけ直感とは異なる仕様であるため、気を付ける必要がありそうです。
コメント