본문 바로가기
프로그래밍/Python

파일 이름 일괄 변환

by DaRyun 2014. 1. 15.

만화 파일을 받았더니 파일이름 들이 'XXX (##).jpg' 등으로 되있어서 만화 보는 프로그램에서 순서대로 보여주질 못한다. 나중에 만화 보는 프로그램이나 하나 만들어야 겠다.

우선 아쉬운대로 파일이름들을 내 입맛대로 바꿔 주는 스크립트을 하나 만들었다.

Line 63 언저리의 파싱해서 파일 만드는 부분과 Line 84 언저리의 이름 바꾸기 적당히 고치면 언제나 빠르게 바꿀 수 있겠다.

todo.

    현재 선택 저장.

    파일 변환 규격화.

    GUI Modify

    zip 파일에서 풀어서 변환하고 재압축

  1 import Tkinter
  2 import Tkconstants
  3 import tkFileDialog
  4 import tkMessageBox
  5 import os, sys
  6 
  7 __author__ = 'pn_jkim'
  8 
  9 class TkFileDialogExample(Tkinter.Frame):
 10 
 11     _workingDirectory = r''
 12     _isTested = False
 13     _fileList = []
 14 
 15     def __init__(self, root):
 16 
 17         Tkinter.Frame.__init__(self, root)
 18 
 19         # options for buttons
 20         button_opt = {'fill': Tkconstants.BOTH, 'padx': 5, 'pady': 5}
 21 
 22         # define buttons
 23         Tkinter.Button(self, text='Select Directory', command=self.askdirectory).pack(**button_opt)
 24         Tkinter.Button(self, text='Test rename', command=self.testRename).pack(**button_opt)
 25         Tkinter.Button(self, text='Run Rename', command=self.runRename).pack(**button_opt)
 26 
 27         # defining options for opening a directory
 28         self.dir_opt = options = {}
 29         options['initialdir'] = os.getcwd()
 30         options['mustexist'] = True
 31         options['parent'] = root
 32         options['title'] = 'This is a title'
 33 
 34     def askdirectory(self):
 35 
 36         """Returns a selected directoryname."""
 37 
 38         self._workingDirectory = tkFileDialog.askdirectory(**self.dir_opt)
 39         print self._workingDirectory
 40 
 41         _isTested = False
 42 
 43         return self._workingDirectory
 44 
 45     def testRename(self):
 46 
 47         """Rename Test."""
 48 
 49         if self._workingDirectory == r'':
 50             tkMessageBox.showwarning('Warning', 'Please Select Directory.')
 51             return
 52 
 53         try:
 54             os.chdir(self._workingDirectory)
 55         except:
 56             tkMessageBox.showwarning('Error', "Cannot go to this directory\n(%s)" % self._workingDirectory )
 57             self.defaultsetting()
 58             return
 59 
 60         for filename in os.listdir(self._workingDirectory):
 61             try:
 62                 name, tmp = filename.split('(');
 63                 number, tmp = tmp.split(')');
 64                 tmp, ext = os.path.splitext(filename)
 65                 name2 = name.strip() + '_' + number.zfill(4) + ext
 66                 self._fileList.append((filename, name2))
 67             except:
 68                 print 'split error', '====>', filename
 69 
 70         self._isTested = True
 71         return
 72 
 73     def runRename(self):
 74 
 75         """Run Rename."""
 76 
 77         if self._isTested == False:
 78             tkMessageBox.showwarning('Warning', 'Should Test First.')
 79             return
 80 
 81         for matching in self._fileList:
 82             try:
 83                 print '[RENAME]', matching[0], '=>', matching[1]
 84                 #os.rename(matching[0], matching[1])
 85             except:
 86                 tkMessageBox.showwarning('Error', "Rename Error\n(%s, %s)" % matching[0], matching[1] )
 87 
 88         return
 89 
 90 
 91     def defaultsetting(self):
 92         _workingDirectory = r''
 93         _isTested = False
 94         _fileList = []
 95         return
 96 
 97 if __name__=='__main__':
 98     root = Tkinter.Tk()
 99     TkFileDialogExample(root).pack()
100     root.mainloop()


댓글