파일 입출력
import os
print(os.getcwd()) #현재 작업중인 디렉토리 위치 확인.
print(os.listdir('.')) #디렉토리 안에 존재하는 파일 리스트로 리턴.
#['.project', '.pydevproject', '.settings', 'Ex01.py']
print(os.listdir('..')) #디렉토리 상위폴더
print(len(os.listdir('..'))) #디렉토리 상위폴더의 파일 갯수
flist =os.listdir('.')
print('flist :',flist)
def filetype(fn):
print(fn,":",end='')
if os.path.isfile(fn) :
print('file')
if os.path.isdir(fn) :
print('directory')
for filename in flist :
filetype(filename)
#os.rename('a1.txt','a2.txt')
#os.remove("a2.txt")
#os.removedirs('forTest') #==rmdir 폴더가 비어있지 않으면 사용할 수 없다.
import shutil
#shutil.rmtree('forTest') #폴더에 무언가 들어있어도 같이 삭제한다.
shutil.copy('Ex02.py', 'test.py')
f=open('test.txt','a')
f.write('peach')
f.close()
# mode
# 공통점 :파일이 없으면 새로 만든다.
# 'w' : write 파일 내용을 삭제후 작성
# 'a' : add 파일 내용 상관 없이 추가
# 'r' : read 파일 내용을 읽어들임 (기본값)
f2 =open('test2.txt','r') # 읽기전에 파일이 없으면 error
#파일포인터 : 첫번째 글자부터 하나씩 이동해 읽어들임
pos = f2.tell() #파일포인터의 위치를 읽어들임
print('pos : ',pos)
f2.seek(2) # 위치 이동 0부터 시작, 한글은 2개씩 차지한다.
readstr = f2.read()
print('readstr :',readstr)
pos = f2.tell()
print('pos : ',pos)
f2.close()
gugu = open('gugudan.txt','w')
j=input('구구단 단 입력 :')
for i in range(1,10) :
print(j,'*',i,'=',int(j)*i)
dap = j+' * '+str(i)+' = '+str(int(j)*i)
if i!=9 :
dap += '\n'
gugu.write(dap)
gugu.close()
print('---------------------')
dan = open('gugudan.txt')
ready=dan.read()
print(ready)
print(type(ready))
dan.close()
print('---------------------')
dan = open('gugudan.txt')
while True :
readline=dan.readline() #엔터까지 1줄 읽는다.
if readline=='' :
break
print('readline :',readline,end='')
print(type(readline))
dan.close()
print('---------------------')
dan = open('gugudan.txt')
read = dan.readlines()
print('read :',read)
print(type(read)) #<class 'list'>
for r in read :
print(r,end='')
dan.close()
di={}
fr = open('voca.txt','r')
text =fr.read()
words =text.split()
for word in words :
if di.get(word) == None :
di[word] = 1
else :
di[word] = di.get(word)+1
#di[word] = di.get(word,0)+1 로 if문 작성 없이 사용할 수 있다.
fr.close()
sort_di =sorted(di.items(), key = lambda item: item[1])
fw = open('result.txt','w')
for k,v in sort_di :
fw.write(k+' '+str(v)+'\n')
fw.close()
클래스 Class
class Person : #클래스에 정의할 함수,변수는 전부 들여쓰기
lastname ='김' #클래스 변수 ==static
def setName(self,name): #메소드 정의시 매개변수 self는 자동 생성된다. 지우면 안됨.
print('self :',self)
print('self.lastname :',self.lastname)
print('Person.lastname :',Person.lastname)
self.fullname = self.lastname + name #객체 선언. 주소값마다 다르다.
return self.fullname
p1 = Person()
p2 = Person()
print(p1) #주소값 리턴 객체마다 다르다.
print(p2)
print(p1.lastname)
print(p2.lastname)
print(Person.lastname)
fn1 = p1.setName('웬디') #받는 변수가 2갠데 하나만 보내도 되는이유 : self는 객체의 주소(p1의 주소)가 간다.
print('fn1 :',fn1)
print(p1.fullname) # 리턴을 설정해주지 않아도 이런식으로 받아볼 수 있다.
print()
fn2=p2.setName('정국')
print('fn2 :',fn2)
print(p2.fullname)
class Student :
name = '철수' # 클래스 네임스페이스
def __init__(self,num): #생성자 __init__(self) : pass가 기본형
print('Student 생성자',num)
def info(self):
self.name='아이유' # 인스턴스 네임스페이스
s1 = Student(10)
s2 = Student(20)
print(Student.name)
print(s1.name)
print(s2.name)
print()
s1.info() #공통변수를 지역변수로 변환
s2.info()
print(s1.name) #우선순위 차이로 지역변수 리턴
print(s2.name)
print()
Ex03.py
class Bank :
rate = 0.3
def __init__(self,money):
self.money=money
def save(self):
self.save = self.money+self.money*Bank.rate
def show(self):
print('self.save :',int(self.save))
if __name__ =='__main__' :
b1 = Bank(10000)
b1.save()
b1.show()
b2 = Bank(30000)
b2.save()
b2.show()
Ex04.py
#import Ex03
#from Ex03 import Bank
import Ex03 as e3
b3 = e3.Bank(50000)
b3.save()
b3.show()
class Super :
def __init__(self):
print('Super init')
def show(self):
print('Super show')
class Sub(Super) :
def __init__(self):
Super.__init__(self) # 호출이 없으면 부모 클래스 생성자에 접근하지 않는다.
print('Sub init')
def show(self):
Super.show(self)
print('Sub show')
class Sub2(Super):
pass
s1 =Super()
s1.show()
print('--------------')
s2= Sub()
s2.show()
print('--------------')
s3 = Sub2() # 별도로 생성자를 만들지 않아서 부모 생성자가 호출된다.
s3.show()
'Develop > Python' 카테고리의 다른 글
1012 Python pandas DataFrame (0) | 2022.10.13 |
---|---|
1011 Python Numpy,pandas(맛보기) (1) | 2022.10.13 |
1007 Python Class,예외처리,DB (1) | 2022.10.13 |
1005 Python list 이어서,튜플,사전,함수,모듈 (1) | 2022.10.06 |
1004 Python Start For문,If문,list (0) | 2022.10.06 |