skip to content
barorin&?

ファイルの移動(移動先に同名ファイルがあればリネームもする)

/ 1 min read

はじめに

Pythonでファイルを移動するコードです。
ついでに移動先に同名ファイルがあればリネームします。

方法

import glob
import os
import shutil

# 移動先フォルダに同名のファイルがあるかをチェックして、あればリネーム
def duplicate_rename(file_name_w_ext, target_path):
    file_path = target_path + '/' + file_name_w_ext
    if os.path.isfile(file_path):
        file_name, ext = os.path.splitext(file_name_w_ext)
        i = 1
        while True:
            new_file_name_w_ext = f'{file_name}({i}){ext}'
            new_file_path = target_path + '/' + new_file_name_w_ext
            if not os.path.isfile(new_file_path):
                return new_file_name_w_ext
            i += 1

# 作業ディレクトリの設定
os.chdir('hoge/fuga')

# ファイル移動先
target_path = 'hoge/piyo'

# リネーム
for file_name_w_ext in glob.glob('*'):
    new_file_name_w_ext = duplicate_rename(file_name_w_ext, target_path)
    if new_file_name_w_ext:
        print(f'rename: {file_name_w_ext} to {new_file_name_w_ext}')
        os.rename(file_name_w_ext, new_file_name_w_ext)

# フォルダ移動
for file_name_w_ext in glob.glob('*'):
    print(f'moving: {file_name_w_ext}')
    shutil.move(file_name_w_ext, target_path)

print('done')