xython (win32com + python)
(기타) 윈도우 파일탐색기의 선택 정보 갖고오기
작성자
sjpark
작성일
2025-03-18 21:01
조회
15
(기타) 윈도우 파일탐색기의 선택 정보 갖고오기
일을 하다보면, 파일을 확인하거나 파일의 이름을 변경하고 싶을 때도 있다. 물론 이름을 알고잇다면, 그것을 그대로 사용하면 되지만, 생각보다 다른 방법을 더 많이 사용하는데, 대부분 파일익스플로러에서 선택한 파일이나 폴더의 정보를 바꾸고 싶은 경우가 더 많다- 파일익스프로로에서 선택한것의 파일이름을 변경
- 파일이름중 일부분을 제거하고 싶은 경우
- 폴더를 삭제하거나 이동하고 싶은 경우

아래의것은 전체 선택한 파일이나 폴더의 정보를 갖고오는 전체적인 코드를 보여드리면 아래와 같읍니다. 여기에서 가장 중요한 부분은 파일탐색기를 com객체를 이용해서 연결하는 방법을 더 관심두고 봐주시기 바랍니다
shell = win32com.client.Dispatch("Shell.Application")
아래는 전체적인 선택한 부분의 정보를 갖고오는 코드립니다
# -*- coding: utf-8 -*-
import win32com.client
def get_selected_files():
# Shell.Application COM 객체 생성
shell = win32com.client.Dispatch("Shell.Application")
# 현재 열려 있는 탐색기 창 가져오기
windows = shell.Windows()
for window in windows:
# 탐색기 창이 폴더를 표시하는지 확인
print(window.Name)
if window.Name in ["Windows 탐색기", "File Explorer", "파일 탐색기"]:
folder_view = window.Document
print(folder_view.Selecteditems().Count)
selected_items = folder_view.Selecteditems()
# 선택된 파일의 경로 출력
for item in selected_items:
print(item.Path)
get_selected_files()
# 파일 탐색기에서 선택한것의 정보를 갖고오는것

위의 기본적인 부분에서 몇가지를 추가하고 정리를 하면 좀더 보기 좋은 형태가 됩니다
# -*- coding: utf-8 -*-
import win32com.client
def get_selected_filenames_at_explorer ():
# Shell.Application COM 객체 생성
shell = win32com.client.Dispatch("Shell.Application")
# 현재 열려 있는 탐색기 창 가져오기
windows = shell.Windows()
for window in windows:
# 탐색기 창이 폴더를 표시하는지 확인
print(window.Name)
if window.Name in ["Windows 탐색기", "File Explorer", "파일 탐색기"]:
folder_view = window.Document
print(folder_view.Selecteditems().Count)
selected_items = folder_view.Selecteditems()
# 선택된 파일의 경로 출력
for item in selected_items:
print("경로 => ", item.Path)
print("타입 => ", item.Type)
print("이름 => ", item.Name)
get_selected_filenames_at_explorer ()
# 파일 탐색기에서 선택한것의 정보를 갖고오는것
위의 코드를 좀 다듬어서 아래의 youtil 모듈의 함수로 만들었습니다. 간단하게 그냥 youtil모듈을 import한후에 탐색기를 킨다음에 함수를 실행하면 그결과로 다음과 같이 나옵니다
# -*- coding: utf-8 -*-
import youtil
xutil = youtil.youtil()
# 파일 탐색기에서 선택한것의 정보를 갖고오는것
l2d = xutil. get_all_selected_file_n_folder_at_explorer()
xutil.print_one_by_one(l2d)

이번에는 우리가 원하는 파일을 바꿔보는 것을 보여드립니다

먼저 아래의 코드를 사용해서 현재의 선택된 것을 갖고오는 방법을 보여드리면, 아래와 같습니다
# -*- coding: utf-8 -*-
import youtil
xutil = youtil.youtil()
# 파일 탐색기에서 선택한것의 정보를 갖고오는것
l2d = xutil.get_all_selected_file_n_folder_at_explorer()
xutil.print_one_by_one(l2d)

이번에는 폴더로 들어온 것의 이름을 바꿔보고, 파일중에 두번째것을 다른이름으로 바꿔보는 것을 보여드립니다
1번째 폴더의 이름을 new_folder_002로 바꿔봅니다
# -*- coding: utf-8 -*-
import youtil
xutil = youtil.youtil()
# 파일 탐색기에서 선택한것의 정보를 갖고오는것
l2d = xutil.get_all_selected_file_n_folder_at_explorer()
xutil.print_one_by_one(l2d)
new_folder_name = "new_folder_002"
path, name = xutil.split_directory_as_path_n_filename(l2d[0]["path"])
print(path, name)
xutil.change_folder_name(l2d[0]["path"], path+"\\"+new_folder_name)

두번째로 파일을 바꾸는 부분은 폴더를 바꾸는 것과 같기는 하지만 한번더 해보도록 하면,
# -*- coding: utf-8 -*-
import youtil
xutil = youtil.youtil()
# 파일 탐색기에서 선택한것의 정보를 갖고오는것
l2d = xutil.get_all_selected_file_n_folder_at_explorer()
xutil.print_one_by_one(l2d)
new_file_name = "new_file_222.docx"
path, name = xutil.split_directory_as_path_n_filename(l2d[2]["path"])
print(path, name)
xutil.change_filename(l2d[2]["path"], path+"\\"+new_file_name)
