<aside> 💡 文字コードUTF-8に注意。間違えると正しく開けなくなったりする。

</aside>

Examples

_name = 'tyNukeScriptEditor'
_version = 'v1.0.0'
_updated = '2023/01/21'

"""
* Coding : Windows10 Python 3.7.9
    * Python2.7では動かない
* Coding by : Tatsuya Yamagishi
* Created : 2023/01/21
* Author : Khaki@2023
"""

# フォルダ
ROOT = r'V:\\prism2\\03_Production\\Shots'

# 対象の文字列
SRC = 'V:/project/work_3d'

# 置き換える文字列
TRG = 'Y:/project/work'

import pathlib
from pprint import pprint

def main():
    """
    メイン関数
    """
    # Pathクラスに格納
    root = pathlib.Path(ROOT)

    # Path.globでフォルダ内の.nkファイルを再帰的に収集
    nuke_script_file_list = root.glob('**/*.nk')

    for nuke_script_file in nuke_script_file_list:
        """
        収集したファイルのループ処理
        """
        # ファイルパス表示
        print(nuke_script_file.as_posix())

        # テキストファイルをutf-8にエンコードしてラインで読み込む
        with nuke_script_file.open(encoding='utf8') as f:
            script_code = f.readlines()

        # 開いたテキストファイルを処理
        edited = False # 編集済フラグ
        for i, line in enumerate(script_code):
            if SRC in line:
                """
                行に<SRC>が見つかったら置き換える
                """
                edited = True
                new_line = line.replace(SRC, TRG)
								script_code[i] = new_line

								print(f'{i}\\\\n\\\\t{line}')
                print(f'\\\\t{new_line}')

        #---------------------------#
        # 編集してたら保存
        #---------------------------#
        if edited:
            """
            編集した場合、ファイルを保存
            """
            with nuke_script_file.open(mode='w', encoding='utf8') as f:
                f.writelines(script_code)

if __name__ == '__main__':
    main()