クラスの練習として、ファイルについてのクラスをつくってみました。
#
# -*- 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 件のコメント:
コメントを投稿