# 압축 파일 확인import glob
zipfile_path = []
for filename in glob.glob(os.path.join(target_path, '**/*.zip'), recursive=True):
zipfile_path.append(filename)
print(zipfile_path)
['./고라니\\데이터저장_물류.zip']
고라니 폴더 상황
In [4]:
# 압축 파일 해제import zipfile
for filename in zipfile_path:
with zipfile.ZipFile(filename) as myzip:
zipinfo = myzip.infolist() # zip파일 정보for info in zipinfo:
decode_name = info.filename.encode('cp437').decode('euc-kr') # 한글 때짐 방지
info.filename = os.path.join(target_path, decode_name)
myzip.extract(info)
WARNING: You are using pip version 20.2.1; however, version 23.0.1 is available.
You should consider upgrading via the 'c:\users\acer\appdata\local\programs\python\python38\python.exe -m pip install --upgrade pip' command.
엑셀 파일을 파이썬과 연동하기 위한 라이브러리를 다운 받았다.
In [8]:
import openpyxl as opx
In [21]:
# 폴더별 파일명을 입력 받아 액셀파일에 저장하는 함수
def getFileName(target_path):
wb = opx.Workbook()
ws = wb.active # 새로 생성한 WorkBook의 활성화 시트를 ws로 정의
ws.cell(row=1, column=1).value='파일경로'
ws.cell(row=1, column=2).value='파일명(변경전)'
ws.cell(row=1, column=3).value='파일명(변경후)'
i =2
current_dir = target_path
filelist = os.listdir(current_dir)
for filename in filelist:
ws.cell(row=i, column=1).value= current_dir +'/'
ws.cell(row=i, column=2).value= filename
i = i +1
wb.save(os.path.join(target_path, 'filelist.xlsx'))
In [22]:
getFileName(target_path)
폴더안에 filelist.xlsx 파일 생성
파일 내부에 파일 목록이 생성 되었다.
3. 파일명 변경하기
먼저 엑셀에서 변경할 파일명들을 직접 입력한다.
In [23]:
defexcelRead(filepath : str) -> list:wb = opx.load_workbook(filepath)ws = wb.activedirpath = [r[0].value for r in ws]file_before = [r[1].value for r in ws]file_after = [r[2].value for r in ws]len_num = len(dirpath)datalist = []fori in range(1, len_num):temp_tuple = (dirpath[i], file_before[i], file_after[i])datalist.append(temp_tuple)returndatalist
A_2022_01_13_부서로그_인사_001.pdf의 파일 명을 A_2022_01_13_부서로그_인사_001.pdf로 변경합니다
A_2022_01_13_부서로그_인사_002.pdf의 파일 명을 A_2022_01_13_부서로그_인사_002.pdf로 변경합니다
A_2022_01_13_부서로그_인사_003.pdf의 파일 명을 A_2022_01_13_부서로그_인사_003.pdf로 변경합니다
A_2022_04_10_생산로그_생산_001.pdf의 파일 명을 A_2022_04_10_생산로그_생산_001.pdf로 변경합니다
A_2022_04_10_생산로그_생산_002.pdf의 파일 명을 A_2022_04_10_생산로그_생산_002.pdf로 변경합니다
A_2022_04_10_생산로그_생산_003.pdf의 파일 명을 A_2022_04_10_생산로그_생산_003.pdf로 변경합니다
A_2022_04_10_생산로그_생산_004.pdf의 파일 명을 A_2022_04_10_생산로그_생산_004.pdf로 변경합니다
A_2022_06_30_생산로그_생산_001.pdf의 파일 명을 A_2022_06_30_생산로그_생산_001.pdf로 변경합니다
A_2022_06_30_생산로그_생산_002.pdf의 파일 명을 A_2022_06_30_생산로그_생산_002.pdf로 변경합니다
A_2022_07_20_부서로그_인사_001.pdf의 파일 명을 A_2022_07_20_부서로그_인사_001.pdf로 변경합니다
A_2022_07_20_부서로그_인사_002.pdf의 파일 명을 A_2022_07_20_부서로그_인사_002.pdf로 변경합니다
A_2022_07_20_부서로그_인사_003.pdf의 파일 명을 A_2022_07_20_부서로그_인사_003.pdf로 변경합니다
A_2022_07_20_부서로그_인사_004 (1).pdf의 파일 명을 A_2022_07_20_부서로그_인사_004.pdf로 변경합니다
B_2022_02_20_상반기_클래스설계_001.xlsx의 파일 명을 B_2022_02_20_상반기_클래스설계_001.xlsx로 변경합니다
B_2022_02_20_상반기_클래스설계_002.xlsx의 파일 명을 B_2022_02_20_상반기_클래스설계_002.xlsx로 변경합니다
B_2022_06_20_하반기_클래스설계_001.xlsx의 파일 명을 B_2022_06_20_하반기_클래스설계_001.xlsx로 변경합니다
B_2022_06_30_하반기_클래스설계_002.xlsx의 파일 명을 B_2022_06_30_하반기_클래스설계_002.xlsx로 변경합니다
C_2022_03_30_데이터베이스_ERD_001.xlsx의 파일 명을 C_2022_03_30_데이터베이스_ERD_001.xlsx로 변경합니다
C_2022_03_30_데이터베이스_ERD_002.xlsx의 파일 명을 C_2022_03_30_데이터베이스_ERD_002.xlsx로 변경합니다
C_2022_03_30_데이터베이스_ERD_003.xlsx의 파일 명을 C_2022_03_30_데이터베이스_ERD_003.xlsx로 변경합니다
C_2022_09_10_데이터베이스_ERD_001 (1).xlsx의 파일 명을 C_2022_09_10_데이터베이스_ERD_001.xlsx로 변경합니다
C_2022_09_10_데이터베이스_ERD_002.xlsx의 파일 명을 C_2022_09_10_데이터베이스_ERD_002.xlsx로 변경합니다
C_2022_09_10_데이터베이스_ERD_003.xlsx의 파일 명을 C_2022_09_10_데이터베이스_ERD_003.xlsx로 변경합니다
D_20220110_데이터저장_물류_001.pdf의 파일 명을 D_20220110_데이터저장_물류_001.pdf로 변경합니다
D_20220110_데이터저장_물류_002.pdf의 파일 명을 D_20220110_데이터저장_물류_002.pdf로 변경합니다
D_20220723_데이터저장_물류_001.pdf의 파일 명을 D_20220723_데이터저장_물류_001.pdf로 변경합니다
D_20220723_센터가동현황_물류_002.pdf의 파일 명을 D_20220723_센터가동현황_물류_002.pdf로 변경합니다
내사진.jpg의 파일 명을 내사진.jpg로 변경합니다
데이터저장_물류.zip의 파일 명을 데이터저장_물류.zip로 변경합니다
새파일1_복사본.txt의 파일 명을 새파일1_복사본.txt로 변경합니다
점심시간.txt의 파일 명을 저녁시간.txt로 변경합니다
주피터노트북.txt의 파일 명을 주피터노트북.txt로 변경합니다
폴더에서 파일명들이 변경된걸 확인 할 수 있다.
4. 폴더 생성하기
In [28]:
import fnmatch
In [33]:
def categoryList(target_path : str) -> list:
file_list = []for filename in os.listdir(target_path):
if fnmatch.fnmatch(filename, '*_[0-9][0-9][0-9].*'):
file_list.append(filename)
category = []for file in file_list:
temp_list = file.split('_')
category.append(temp_list[-2])
temp_set = set(category)
result = list(temp_set)
return result