개인적 보관 - 폴더 합치기 파이썬.
페이지 정보
본문
# -*- coding: utf-8 -*-
import os
import glob
import shutil
import subprocess
#import re
#import tkinter
#from tkinter import filedialog
import wx
import wx.lib.agw.multidirdialog as MDD
#dir_qty = 74 # 총 대상인 디렉토리
start_file = 2 # 표지 파일 갯수
book_split = 2 # 폴더 몇개가 하나의 북인지 수량
#i=j=k=1
book_file_qty = 0
def move_file (src_file_name, dst_file_name):
# print("move '"+src_file_name+"' '"+dst_file_name+"'")
shutil.copyfile(src_file_name,dst_file_name)
def processing_files(files_list,src_folder,dst_folder,book_file_qty,dir_qty):
file_qty=0
real_file_no = book_file_qty
for file in files_list:
if (book_file_qty == 0 or file_qty >= start_file):
dst_file = dst_folder+"/"+str(real_file_no+1).zfill(3)+".jpg"
move_file(src_folder+"/"+file,dst_file)
real_file_no = real_file_no + 1
file_qty=file_qty+1
print (src_folder.split("/")[-2]+" : ",src_folder.split("/")[-1],
"(T-"+str(dir_qty-int(src_folder.split("/")[-1]))+")",file_qty,book_file_qty)
return real_file_no
def get_files_count(folder_path):
# dirListing = os.listdir(folder_path)
dirListing = glob.glob(folder_path+'/???')
return len(dirListing)
def createFolder(directory):
try:
if not os.path.exists(directory):
os.makedirs(directory)
except OSError:
print ('Error: Creating directory. ' + directory)
def select_dir():
# Our normal wxApp-derived class, as usual
app = wx.App(0)
dlg = MDD.MultiDirDialog(None, title="Custom MultiDirDialog", defaultPath="C:/Users/Jchung/Desktop/Working/묵검향",
agwStyle=MDD.DD_MULTIPLE|MDD.DD_DIR_MUST_EXIST)
if dlg.ShowModal() != wx.ID_OK:
print ("********************")
print ("선택을 취소했습니다.")
print ("********************")
dlg.Destroy()
return
paths = dlg.GetPaths()
dlg.Destroy()
app.MainLoop()
return paths
def main_processing(target_dir,book_split,start_file,book_file_qty):
i=j=1
dir_qty = get_files_count(target_dir)
folder_name = "/"+target_dir.split("/")[-1]+"/"
print (target_dir.split("/")[-1])
print ("------------------------------------------")
print ("폴더 개수: "+str(dir_qty))
new_dst_folrder = target_dir+folder_name
createFolder(new_dst_folrder)
while i <= dir_qty:
target_dir_name = target_dir+"/"+str(i).zfill(3)
file_list=os.listdir(target_dir_name)
# abcd = divmod(i, book_split)[1]
if divmod(i, book_split)[1] == 0: # 책의 시작
new_dst_folrder = target_dir+folder_name+str(j).zfill(3)
#new_dst_folrder = target_dir+"/complete/"+str(j).zfill(3)
# total_file_qty = get_files_count(target_dir+"/complete/"+str(k).zfill(3))
#book_file_qty = processing_files(file_list,target_dir_name,new_dst_folrder,book_file_qty-start_file)
book_file_qty = processing_files(file_list,target_dir_name,new_dst_folrder,book_file_qty,dir_qty)
book_file_qty = 0
j = j+1
else : # 나머지 북 (폴더/book_split가 0이 아닌 경우)
new_dst_folrder = target_dir+folder_name+str(j).zfill(3)
#new_dst_folrder = target_dir+"/complete/"+str(j).zfill(3)
#dst_folder_qty = get_files_count(new_dst_folrder)
createFolder(new_dst_folrder)
book_file_qty = processing_files(file_list,target_dir_name,new_dst_folrder,book_file_qty,dir_qty)
# k=j
i=i+1
archive_name = target_dir+"/../"+target_dir.split("/")[-1]+".zip"
archive_target = target_dir + folder_name
# run_command = "C://Program Files//Bandizip//Bandizip.exe"
run_command = "C://Program Files//7-Zip//7z.exe"
print (folder_name.split("/")[1]+" 압축중.....")
# subprocess.run([run_command,"a", "-y", archive_name, archive_target], stdout=True)
result = subprocess.run([run_command,"a", "-tzip", archive_name, archive_target], stdout=subprocess.PIPE)
result_out = result.stdout
# print (result_out.decode(encoding='UTF-8', errors='ignore'))
print (str(result_out, 'cp949'))
print ()
print (archive_name+" Comleting....")
# shutil.move(archive_name, target_dir+"/../")
if __name__ == "__main__":
# root = tkinter.Tk()
# root.withdraw()
# target_dir=filedialog.askdirectory(parent=root,initialdir="C:/Users/Jchung/Desktop/Working/묵검향",title='Please select a directory')
# main_processing(target_dir,book_split,start_file,book_file_qty)
target_dirs = select_dir()
if target_dirs is not None:
print ("처리할 폴더 개수: ",len(target_dirs))
print ("------------------------------------------")
for path in enumerate(target_dirs):
target_dir = path[1].replace('\','/')
print(target_dir)
main_processing(target_dir,book_split,start_file,book_file_qty)
print(" 완료!!!!")
- 다음글오래된 PDA 네비게이션 미오 168 배터리 교체 14.11.18
댓글목록
등록된 댓글이 없습니다.