2011年1月29日土曜日

python:クラスを作ってみた

クラスの練習として、ファイルについてのクラスをつくってみました。

#
# -*- coding:sjis -*-
#
import os,sys,win32com.client
oFSO=win32com.client.Dispatch("Scripting.FileSystemObject")

class File:
 def __init__(self, path):
  self.set_path(path) #フルパス
  self.set_fdr() #フォルダ名
  self.set_name() #ファイル名
  self.set_root() #フルパスの拡張子よりも前部分
  self.set_ext() #拡張子(.を含む)
  self.set_drv() #ドライブ名(:を含む)
  self.set_isfile() #存在するか
  self.set_path83() #フルパス8.3形式名。存在時のみ。
  self.set_name83() #ファイル8.3形式名。存在時のみ。
  self.set_size() #ファイル容量(バイト)
 def set_path(self, s): self.path = s
 def set_fdr(self): self.fdr = os.path.dirname(self.path)
 def set_name(self): self.name = os.path.basename(self.path)
 def set_root(self): self.root = os.path.splitext(self.path)[0]
 def set_ext(self): self.ext = os.path.splitext(self.path)[1]
 def set_drv(self): self.drv = os.path.splitdrive(self.path)[0]
 def set_isfile(self): self.isfile = os.path.isfile(self.path)
 def set_path83(self):
  self.path83=""
  if self.isfile:

    self.path83 = oFSO.GetFile(self.path).ShortPath
 def set_name83(self):

 self.name83 = os.path.basename(self.path83)
 def set_size(self):
  self.size=0
  if self.isfile:

    self.size = os.path.getsize(self.path)
 
if __name__=="__main__":
 sIn=""
 if len(sys.argv)>1: sIn = sys.argv[1]
 p = File(sIn)
 print "path = "+p.path
 print "fdr = "+p.fdr
 print "name = "+p.name
 print "root = "+p.root
 print "ext = "+p.ext
 print "drv = "+p.drv
 print "isfile = "+str(p.isfile) #bool型
 print "path83 = "+p.path83
 print "name83 = "+p.name83
 print "size = "+str(p.size) #int型

-----
例1:存在するファイルを指定した場合
path = C:\Documents and Settings\a23456789.html
fdr = C:\Documents and Settings
name = a23456789.html
root = C:\Documents and Settings\a23456789
ext = .html
drv = C:
isfile = True
path83 = C:\DOCUME~1\A23456~1.HTM
name83 = A23456~1.HTM
size = 112


例2:存在しないファイルを指定した場合
path = C:\Documents and Settings\b23456789.html
fdr = C:\Documents and Settings
name = b23456789.html
root = C:\Documents and Settings\b23456789
ext = .html
drv = C:
isfile = False
path83 =
name83 =
size = 0

0 件のコメント:

コメントを投稿