LoginSignup
0
1

More than 1 year has passed since last update.

[python] 特定の名前を持つファイルを自分のデスクトップに集める方法

Last updated at Posted at 2022-09-22

はじめに

欲しいと思ったファイルを会社の共有フォルダから見つけ出すことは時間がかかってしまう。
共有フォルダは自分が欲しいファイル以外にも多くのファイルが存在するからだ。
また、フォルダでのファイル検索機能だとファイルが多すぎて時間がかかりすぎてしまう。
今回は必要な名前を持つファイルをすべて自分のデスクトップのフォルダにコピーしてくることを目標とする。

環境

python 3.7.8
window 10

構成

┃
┣━━ 共有フォルダ/
┃   ┗━━━━ Delta/
┃       ┗━━━━ CBA001/
┃           ┗━━━━ CBA001.xlxs
┃   ┗━━━━ Oil/
┃       ┣━━━━ CBA001 30'.xlxs
┃       ┗━━━━ CBA001.xlxs
┃   ┗━━━━ 成分調査/
┃       ┣━━━━ CBA001 in Water.xlxs
┃       ┗━━━━ CBA001.xlxs
┃   ┗━━━━ 強度/
┃       ┣━━━━ CBA001-007 200h.xlxs
┃       ┗━━━━ CBA001-007.xlxs

データはすべて通し番号で管理され、今回必要なデータはCBA001のようになっている。
共有フォルダ内はデータの種類ごとに保管される。

条件

  • コピーした後のファイル名を、ファイルの上位フォルダ名(項目名で)で区分することで重複を防ぐ。

  • Dletaフォルダのように、フォルダのフォルダ内に存在するファイルもコピーすること。

Code

import os
import glob
import shutil

target_name = input('ファイル名を入力してください。: ')

dir_data = os.path.expanduser('~/Desktop') + fr'\{target_name} Data'
os.makedirs(dir_data, exist_ok=True)
# デスクトップにフォルダを作る。

file_share_path = rf'C:\Users\junsa\Desktop\共有フォルダ\**\*{target_name}*.xlsx'
list = glob.glob(file_share_path, recursive=True)
# サブフォルダを含めて再帰的にファイルを探索する

for file in list:
    Copyfile(file)
def CopyFile(file_target: str):
    dir_share = r'C:\Users\junsa\Desktop\共有フォルダ'
    dir_list = os.listdir(self.dir_share)
    print(dir_list)
    #['Delta', 'Oil', '強度', '成分検査']
    
    #上位フォルダ名をつけて保存する。 
    for dir_name in dir_list:
        if dir_name in file_target:
            shutil.copy2(file_target, dir_data + fr'\{dir_name} {os.path.basename(file_target)}')

結果

スクリーンショット 2022-09-22 234846.png

まとめ

上位フォルダ名をつけることによってファイル名の重複を防ぎ、ファイルをすべて保存することができる。
osglobの組み合わせでフォルダ内のファイルのほとんどを条件付きで探すことができる。
必要な時だけファイルをコピーして不必要になったら消したらいいので、デスクトップ画面をきれいに保つことができ、ファイルを探す手間が減ります。

過去の投稿

0
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
0
1