LoginSignup
2
1

More than 1 year has passed since last update.

SPSS Modelerで入出力のファイルパスを一括変更する

Last updated at Posted at 2019-01-31

SPSS Modelerで他の人からもらったストリームを実行するときにファイルパスが違って実行ができないことがあると思います。
1、2ファイルであれば書き換えても大きな手間ではありませんが、たくさんのファイルを使っている場合は大変です。
そこで入出力のファイルパスを一括変更するpythonスクリプトを書きました。

1 pythonスクリプト

changepath.py
import modeler.api

oldpath =u'C:\\Program Files\\IBM\\SPSS\\Modeler\\18.1\\Demos\\japanese_ja\\bankloan.sav'
newpath =u'C:\\Program Files\\IBM\\SPSS\\Modeler\\18.2\\Demos\\japanese_ja\\bankloan.sav'

stream = modeler.script.stream()

for node in stream.iterator():
    if (node.getTypeName() == "variablefile"
        or node.getTypeName() == "excelimport"
        or node.getTypeName() == "statisticsimport"
        or node.getTypeName() == "outputfile"
        or node.getTypeName() == "excelexport"
        or node.getTypeName() == "statisticsexport"):
        full_filename=node.getPropertyValue("full_filename")
        full_filename=full_filename.replace(oldpath,newpath)
        print full_filename
        node.setPropertyValue("full_filename",full_filename)

oldpath とnewhpathのところに変更したい旧パスと新パスを指定すればOKです。

  • パス名のディレクトリの区切りに\(バックスラッシュ。日本語Windows上だと¥マーク)を使う場合は、上の例のように\\のように二つ重ねてエスケープしてください。
  • パス名のディレクトリの区切りには/(スラッシュ)を使うこともできます。この場合はエスケープの必要はありません。Mac版やLinuxのサーバーで使っている場合は/が使われています。
  • シングルクォーテーションの前のuを忘れると日本語の入ったファイルパスで失敗します。
  • 可変長ファイル、Excelファイル、Statisticsファイルに対応しています。他の形式にも対応したい場合はif (node.getTypeName() == "variablefile"の部分に追加してください。

2 実行例

18.1のデモディレクトリから18.2のデモディレクトリに変更します。

image.png

ストリームのスクリプトに上のスクリプトをコピーペーストして、oldpath とnewhpathを変更します。そして、「このスクリプトを実行」ボタンをクリックします。
デバッグの欄に変更したパスを表示します。
image.png

以下のように変更されます。
image.png

3 おまけ

  • チームでストリームを共有するときには以下の「ディレクトリの設定」「サーバーディレクトリの設定」の機能で上位パスをそろえておいて、相対パスで指定するか、環境変数などをつかって同じファイルパスで指定するようにしておくことをお勧めします。上のスクリプトを毎回実行するのは大変なので。
    image.png

  • 実行例では製品のデモデータのパスのバージョン部分を変更しましたが、デモデータをつかったストリームを他のバージョンでも読めるようにするには$CLEO_DEMOS環境変数を使ったほうがよいです。以下の指定だとバージョンが変わってもパスの変更の必要がありません。
    image.png

テストした環境

汎用的に動くと思いますが、テストしたの以下の環境です
SPSS Modeler 18.1.1
Windows 10 64bit

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1