'21/12/11更新:新しいファイルパスをリストから作成する方法に変更した。またzip圧縮するコードも追記。
本記事では、下図のようにファイルパスからフォルダパス,フォルダ名,ファイル名,拡張子,拡張子なしファイル名を取得する等の雛形コードを載せました。さらに、ファイル名にサブフォルダ名(の番号)を追記して新しいファイル名を作成して、カレントディレクトリへコピーするコードも載せています。
■本プログラム
import pathlib import os import shutil # 指定ディレクトリ以下のサブディレクトリ含めた対象のファイルパスをリストで取得 #get_file_list = list(pathlib.Path(r'./data_folder').glob('**/*.txt')) get_file_list = list(pathlib.Path(r'./data_folder').glob('**/data.txt')) save_dir_name = 'new_dir' for file_path in get_file_list: print('file_path -> ', file_path) # ディレクトリのパスを取得 dir_path = file_path.parent print('dir_path -> ', dir_path) # 末尾のディレクトリ名を取得 dir_name = dir_path.name print('dir_name -> ', dir_name) # ディレクトリ名の'_'より右側を取得 dir_name2 = dir_name[dir_name.rfind('_') + 1:] print('dir_name2 -> ', dir_name2) # 2桁だけ取得 dir_name3 = dir_name2[1:] print('dir_name3 -> ', dir_name3) # 拡張子付きファイル名を取得 file_name = file_path.name print('file_name -> ', file_name) # 拡張子を取得 file_name2 = file_path.suffix#.lstrip('.') print('file_name2 -> ', file_name2) # 拡張子なしファイル名を取得 file_name3 = file_name.replace(file_name2, '') print('file_name3 -> ', file_name3) # ディレクトリ名をファイル名に追記して新たなファイル名を作成 new_file_name = file_name3 + '_' + dir_name3 + file_name2 print('new_file_name -> ', new_file_name) # file_pathのファイルを指定ディレクトリへファイル名を変更してコピー my_path = os.getcwd() # ここではカレントディレクトリを指定 my_path_list = [my_path, save_dir_name, new_file_name] new_file_path = os.path.join(*my_path_list) # パスを作成する print('new_file_path -> ', new_file_path) shutil.copy2(file_path, new_file_path) print() # プリント関数の実行による表示上の改行 shutil.make_archive(save_dir_name, 'zip', root_dir = save_dir_name)
以上
<広告>
リンク