수돗물이나 우물물이 솟아오르는 꿈 해몽

  -> 사업이 발전하여 재산이 늘어나고 금전과 관련된 즐거움이 생길 징조이다.


집 안에 없던 수도나 우물이 생기는 꿈 해몽

  -> 귀인의 도움으로 사업이 번창하고 원하던 소망을 이루게 되거나 일자리를 얻어 취직하거나 미혼자는 혼담이 오가게 된다.


수돗물이나 우물물을 깨끗한 그릇에 담는 꿈 해몽

  -> 재물과 이득이 늘어나고 집안이 안정되며 매사에 기쁨이 가득할 길몽이다.


우물가에서 빨래하는 꿈 해몽

  -> 과거를 청산하고 새로운 기분으로 모든 일을 시작한다.


맑은 우물물에 빨래하는 꿈 해몽

  -> 취직, 입학, 승진,등을 하는 등 상서로운 일이 생길 것이다.


더러운 우물물에 빨래를 하는 꿈 해몽

  -> 실행하는 일마다 곤란을 당하여 고생을 많이 할 징조이다.


도망가다가 우물에 빠지거나 우물 속으로 피하는 꿈 해몽

  -> 관재수의 환란이 생기며 관청과 관련된 사고가 있을 징조이다.


맑은 우물물이 흙탕물로 변하는 꿈 해몽

  -> 가세가 기울고 사업에 방해와 손실이 발생하여 곤란한 지경을 당하게 된다.


물건을 우물에 빠뜨리는 꿈 해몽

  -> 생각하지 못한 사고나 궂은 일이 생겨서 큰 피해와 어려움을 겪게 될 것이다.


술에 취해서 우물에 빠지는 꿈 해몽

  -> 관청과 관련된 구설로 재물의 손실이 발생할 조짐이다.


어떤 남자와 우물에서 두레박질을 교대로 한 처녀의 꿈 해몽

  -> 미혼자는 여러 번 혼담이 오고 간 후에 결혼이 성사된다.


우물 내부를 청소하고 새로 꾸미는 꿈 해몽

  -> 앞으로 부귀를 얻어 높은 직책에 오르고 출세하게 될 것을 암시하는 것이다.


우물 속에 비친 본인의 얼굴을 보는 꿈 해몽

  -> 지위와 이름이 높아지고, 사업의 발전하여 일신의 안분이 따르게 될 길몽이다.


우물 속에서 사람의 말소리가 들리는 꿈 해몽

  -> 식구간에 말썽이 생기거나 주위 사람과 연관된 손실이 발생하게 된다.


우물 속을 들여다보는 꿈 해몽

  -> 먼 곳에서 반가운 소식을 받는 기쁨이 있게 될 징조이다.


우물 안에서 하늘을 보는 꿈 해몽

  -> 경제적인 곤경을 면치 못하여 고생할 것이다.


우물 수돗물 꿈 해몽



우물물로 손발을 씻는 꿈 해몽

  -> 걱정하던 일이 해소되며, 미혼자는 좋은 배우자를 만나서 결혼하게 된다.


우물물이 가득 불어나서 넘쳐서 흐른 꿈 해몽

  -> 많은 재산을 모으지만 소비도 많게 된다.


우물물이 하늘로 솟구치는 것을 보는 꿈 해몽

  -> 사업이나 집안이 크게 번창하여 가문을 중흥시킬 것이다.


우물물이 흐렸다가 맑아지는 꿈 해몽

  -> 난관을 당하던 일이 해결의 방도를 찾을 수 있을 것이다.


우물물이 흐린 꿈 해몽

  -> 불운이 찾아올 징조이다.


우물밑의 진흙을 긁어내어 맑은 물이 고이는 꿈 해몽

  -> 장차 재물이나 이득이 늘어나고 사업이 잘 되어 안정을 누리게 된다.


우물에 몸이 비치는 꿈 해몽

  -> 성공하여 많은 사람의 부러움과 존경을 받게 된다.


우물에 물을 퍼다 부은 꿈 해몽

  -> 장사밑천도 풍부하고 수입도 많아지게 될 것이다.


우물에 물이 말라 있거나 마르는 꿈 해몽

  -> 재산이 감소하거나 생활이 어렵게되 가족간에 다툼이 일어나고 자식에게 어려움이 생길 것이다.


우물에 들어가는 꿈 해몽

  -> 근심하던 일이 해결되고 생활의 안정을 찾아 편안한 날을 보낼 징조이다.


우물에 빠지는 꿈 해몽

  -> 아랫사람에게 궂은 일이 생길 징조이다.


우물에 빠져 나오지 못하는 꿈 해몽

  -> 타인에게 원한 맺힐 일을 당하거나 감옥에 갈 일이 있을 것이다.


일부러 들어간 우물에서 나오지 못하는 꿈 해몽

  -> 잔재주를 부리다가 더 큰손해를 보게 되니 조심해야 한다.


우물에 빠져서 허우적거리는 꿈 해몽

  -> 질병이나 예상하지 못한 사고로 고통을 당하게 된다.


우물에 사람을 묻는 꿈 해몽

  -> 장기적인 저축을 하거나 사생활을 보호받게 된다.


우물에 이끼가 끼여 있는 꿈 해몽

  -> 방해자를 멀리하며 본인의 임무수행을 위해 매진할 징조이다.


이끼가 우물이나 연못에 끼는 꿈 해몽

  -> 불성실한 사람을 멀리 하라는 교훈이다.


우물을 발견하거나 찾아서 헤맨 꿈 해몽

  -> 어떤 기관에 사업 관계로 일을 부탁한 것이 뜻대로 성사된다.


우물을 발견하는 꿈 해몽

  -> 사업상 부탁한 일이 본인의 소망대로 이루어질 것이다.


우물의 물을 마시는 꿈 해몽

  -> 결혼,진급,입학·취직·승진과 관련하여 좋은 일이 생겨서 주위의 부러움을 산다


우물이 가득 차는 꿈 해몽

  -> 사업이 좋게 마무리되어서 큰 재물을 모으게 된다.


큰 통이 우물 속에 있는 것을 보는 꿈 해몽

  -> 재물과 이득이 많아지고 운수가 크게 열리며, 바라던 일이 잘 이루어진다.


불어난 우물물이 가득 찬 꿈 해몽

  -> 여러 방면으로 사업이 잘 풀려 재물이 생긴다.


우물 안에서 산이 보이는 꿈 해몽

  -> 뜻밖에 큰 사업체가 생기거나 배우자가 나타난다.


우물물이 처음에 흐려서 못 마시다가 나중에 맑아져서 마시는 꿈 해몽

  -> 소원, 결혼, 취직 등의 일이 난관에 부딪쳤다가 해결되면서 성사된다.


출처가 분명하지 않은 곳에서 여러 번 물을 떠다가 우물에 붓는 꿈 해몽

  -> 세일즈맨이 돈을 수금할 일이 생긴다.


여러 개의 우물을 지나가는 꿈 해몽

  -> 여러 가지 사업 경험을 가지고 거래처를 확보하게 된다.


뜨거운 물이 끓는 우물에 물고기가 우글거리는 것을 본 꿈 해몽

  -> 열성적인 사람들이 교회에서 참된 신앙에 몰두하게 된다.


우물 안에서 사람이 나오는 것을 본 꿈 해몽

  -> 어떤 단체에서 훌륭한 인재를 배출하거나 진리가 담긴 서적을 출판한다.


우물에 물이 많이 고여 있는 꿈 해몽

  -> 일이 이상한 방향으로 전개된다.


우물에서 물을 퍼 올리는 꿈 해몽

  -> 애정 운이 더 이상 좋아질 수 없다.


우물을 파는 꿈 해몽

  -> 가정내의 분쟁발생을 의미한다.


도자기를 우물 속에서 건져내는 꿈 해몽

  -> 소비자의 기호에 맞는 상품을 개발하여 출시하거나, 좋은 횡재수로 재물이 증가한다.


사람, 신령, 선녀 등이 우물 속에서 나오는 꿈 해몽

  -> 관청, 학원, 교회 등에서 훌륭한 인재가 출현하거나 진리의 서적이 출판된다.


우물 속을 뒤지거나 보면서 무엇을 찾는 꿈 해몽

  -> 주위 사람들의 구설, 비방이나 시비 등 장애에 부딪쳐 난관과 손실이 발생한다.


코스모스 꽃이 우물가에 곱게 피어 있는 꿈 해몽

  -> 학문, 과학, 예술, 의학 등에 관한 연구를 하거나, 발굴, 발명, 창작 등의 좋은 일이 생긴다.


우물물로 손발을 씻을 때 시원함을 느끼는 꿈 해몽

  -> 그 동안 고생하던 근심이나 걱정이 사라지거나, 결혼에 좋은 진전이 있으며, 청탁, 입학 등을 하게 된다.


우물물이 뒤집혀 흘러 나오거나 흙탕물이 되어 부글부글 끓는 꿈 해몽

  -> 집안에 좋지 않은 일이 발생하고, 자신의 사업체, 회사 등이 어렵게 되며, 우환이 발생한다.


우물에 엎드려 숨는 꿈 해몽

  -> 관재와 구설로 교도소 등에 들어갈 가능성이 크다.


우물에 집이나 건물이 떠다니는 꿈 해몽

  -> 남에게 쫓기는 상황이나 구속 당할 일이 있거나, 본인이나 식구들에게 질병 돌발사고 등 궂은일이 생긴다.


우물이 고갈되어 바닥이 드러나는 꿈 해몽

  -> 많은 재산이나 이권을 잃거나, 가업에 낭패 및 손실이 발생한다.


우물이 넘치기만 할 뿐 바닥에 차지 않는 꿈 해몽

  -> 재산을 모으기는 하지만, 예상하지 못한 일이 발생하여 지출도 증가한다.


우물이 저절로 붕괴되거나 파괴되는 꿈 해몽

  -> 집안에 말썽이나 혼란이 발생하여, 풍파와 장애가 생긴다.


이 우물에 들어 가거나 냇가에 떨어 지는 꿈 해몽

  -> 관재·구설·소송이 걱정되는 흉몽이다.특히 학생이 친구의 싸움에 개입하면 큰 어려움을 당하게된다.


우물 안에서 이 밧줄을 타고 승천하는 꿈 해몽

  -> 승진, 당선, 합격, 학위, 자격취득, 사업발전, 승리, 성공, 재물, 횡재, 학업향상등이 이러난다.


우물가의 나무 뒤에서 이 우물에 들어가는 것을 보는 꿈 해몽

  -> 근무하는 직장에서 승진을 하거나, 자신과 관계 있는 어느 기관에 의해 추진 중이던 일이 성사된다.


우물에서 용, 구렁이, 독수리,호랑이가 나오는 꿈 해몽

  -> 높은 자리에 올라 입신양명할 아이를 낳게 될 태몽이다.


동물이 우물에서 나오는 꿈 해몽

  -> 정신적인 갈증을 해소하여 청량한 기분을 가지게 된다.


거북이가 자기 집 우물 속에 들어와 있는 꿈 해몽

  -> 재물이 많이 생기고, 큰 부자가 되어서 가문을 부흥시킬 꿈이다.


집 안으로 거북이 들어오거나 우물 속으로 들어가는 꿈 해몽

  -> 가업이 번성하고 지위와 명예가 높아져 많은 사람의 부러움을 사게 된다.


우물 또는 연못에 잉어를 넣는 꿈 해몽

  -> 계획 중인 일이 발전하거나 크게 입신양명하게 된다.


우물 안에서 물고기가 유유히 놀고 있는 꿈 해몽

  -> 지위가 올라가거나 유명해져서 재물과 명예가 쌓이게 될 길몽이다.


집 우물에 큰 물고기가 들어 있는 꿈 해몽

  -> 자영업자는 사업장을 옮기게 되고, 직장인은 자리나 직장의 이동수가 있다.


우물 속에 잠긴 사파이어의 빛이 찬란한 꿈 해몽

  -> 매우 귀한 학문과 진리를 심도 있게 연구하거나, 학생은 두뇌가 발달하면서 학업성적이 올라간다.


- copy coding -

 

8. 파일 입력 출력

 

8.1 파일 함수와 옵션

 

파일 오픈 함수는 생각보다 많은 매개변수가 있습니다.

open(filename, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

파일을 오픈 하기 위해 주로 사용하는 것은

- filename은 필수로 입력 합니다.

- mode r(읽기), w(쓰기), a(추가하기) 중 하나를 기입하고

- t(텍스트) b(바이너리)도 입력해야 하는데 생략시 t default로 설정됩니다.

- encoding은 생략시 utf-8로 설정 됩니다.

- 나머지는 필요에 따라 선택적으로 적용 합니다.

 

모드는 여러 가지의 조합으로 사용 됩니다.

모드

의미

r

읽기파일을 읽기 위해 오픈 (default). 파일 없으면 오류

w

쓰기파일을 쓰기모드로 오픈. 파일 없으면 생성, 있으면 삭제 생성

x

open for exclusive creation, failing if the file already exists

a

쓰기끝에 추가, 없으면 생성

b

이진 모드

t

텍스트 모드 (default)

+

업데이트용 파일 오픈 (읽기, 쓰기 가능)

 r+

읽기 또는 쓰기, 파일 없으면 오류. 파일 있으면 처음에 추가

 w+

읽기 또는 쓰기, 파일 없으면 생성. 파일 있으면 삭제 후 생성

 a+

읽기 또는 추가, 파일 없으면 생성. 파일 있으면 끝에 추가


python study

 


8.2 파일 생성 및 쓰기

 

f = open(“file_name”, ‘w’)

파일을 쓰기모드(w)로 열면 파일이 존재하지 않는 경우 새로 생성이 되지만 기존에 파일이 존재하는 경우 기존 파일 내용을 삭제하고 새로 쓰기를 하게 됩니다.

 

8.2.1 write() 함수

 

write(data) 함수는 data를 파일에 모두 출력 합니다. 

sum = 0

f = open("F:/Python/file_write01.txt", 'w')

for i in range(1,101):

           sum += i

           tmp_data = "sum( %d ) = %d + %d\n"  % (sum , sum, i)

           f.write(tmp_data)

 

print(sum)

f.close()

(base) F:\Python>python file_w01.py

5050

sum( 1 ) = 1 + 1

sum( 3 ) = 3 + 2

sum( 6 ) = 6 + 3

sum( 10 ) = 10 + 4

sum( 15 ) = 15 + 5

sum( 21 ) = 21 + 6

sum( 28 ) = 28 + 7

sum( 36 ) = 36 + 8

sum( 45 ) = 45 + 9

....(생략)

 

list를 파일로 출력하려면 문자열로 변환하여 출력 하여야 합니다.

list_data = ['aaaa', 'bbbb','cccc']

f = open("F:/Python/file_write02.txt", 'w')

 

f.write('\n'.join(list_data))

 

f.close()

(base) F:\Python>python file_w02.py

aaaa

bbbb

cccc

 

 

8.2.2 writelines() 함수

 

writelines 함수를 이용하면 리스트 형태의 자료를 파일로 출력 가능 합니다.  단점은 모두 한줄로 결합되어 출력이 됩니다.

list_data = ['aaaa', 'bbbb','cccc']

f = open("F:/Python/file_write03.txt", 'w')

 

f.writelines(list_data)

 

f.close()

(base) F:\Python>python file_w03.py

aaaabbbbcccc

 

 

8.3 파일 읽기

 

파일을 읽기 모드(r)로 오픈 하는 경우 파일이 존재 하지 않으면 오류가 발생 하므로 try ... except를 사용하여 오류 처리를 하거나 존재 유무를 확인 하고 읽기 모드로 오픈 합니다.

 

8.3.1 read() 함수

 

read(size)의 형태로 사용되면 size를 생략하면 파일을 하나의 문자열로 리턴 합니다.  문제는 파일의 크기가 가용 메모리 범위를 넘어가면 안되기 때문에 size가 큰 파일은 나누어서 읽기를 추천 합니다.  파일의 끝에 도달하면 빈 문자열(‘’)을 리턴 합니다.

try:

   f = open("F:/Python/file_write01.txt", 'r')

 

   data = f.read()

   print(data)

 

except FileNotFoundError as e:

           print(e)

finally:

   f.close()

전체 읽기

(base) F:\Python>python file_r01.py

sum( 1 ) = 1 + 1

sum( 3 ) = 3 + 2

sum( 6 ) = 6 + 3

sum( 10 ) = 10 + 4

sum( 15 ) = 15 + 5

sum( 21 ) = 21 + 6

...(생략)

 

read(size)를 이용하여 파일 읽기. size 만큼 읽어와 출력 합니다.

try:

   f = open("F:/Python/file_write01.txt", 'r')

 

   data = f.read(100)

   print(data)

 

except FileNotFoundError as e:

           print(e)

finally:

   f.close()

100 byte 읽기

(base) F:\Python>python file_r02.py

sum( 1 ) = 1 + 1

sum( 3 ) = 3 + 2

sum( 6 ) = 6 + 3

sum( 10 ) = 10 + 4

sum( 15 ) = 15 + 5

sum( 21 ) =

 

 

8.3.2 readline() 함수

 

열린 파일을 한 라인씩 읽어오는 함수 입니다.  한 라인씩 읽어 오는 동안 계속 해서 읽어올 라인이 없는지 확인 하고 없으면 break로 종료 합니다.

try:

   f = open("F:/Python/file_write01.txt", 'r')

 

   data = f.readline()

   print(data)

 

except FileNotFoundError as e:

           print(e)

finally:

   f.close()

한라인만 읽어와 출력 합니다.

(base) F:\Python>python file_r03.py

sum( 1 ) = 1 + 1

 

 

8.3.3 readlines() 함수

 

파일을 한꺼번에 읽어서 각 라인을 리스트 형태로 반환하는 함수 입니다.

try:

   f = open("F:/Python/file_write01.txt", 'r')

 

   data_list = f.readlines()

   data_length = len(data_list)

   print("list count : " + str(data_length))

   print(data_list[0])

   print(data_list)

 

except FileNotFoundError as e:

           print(e)

finally:

   f.close()

파일의 라인 수와 List의 첫 번째 요소, 전체 출력

(base) F:\Python>python file_r04.py

list count : 100

sum( 1 ) = 1 + 1

 

['sum( 1 ) = 1 + 1\n', 'sum( 3 ) = 3 + 2\n', 'sum( 6 ) = 6 + 3\n', ...(생략)...]



 

8.4 + 사용


개인적으로는 ‘+’를 붙여 사용 하는 것보다 원래의 기능대로 사용하길 추천 합니다.

 

8.4.1 r+


mode‘r+’를 사용하면 읽기와 쓰기가 가능 합니다파일이 존재하지 않으면 오류를 발생 하고특별히 위치를 정하지 않는다면 파일의 처음에 추가가 됩니다.

try:

   f = open("F:/Python/file_write02.txt", 'r+')

 

   f.write("kkk")

  

except FileNotFoundError as e:

           print(e)

finally:

   f.close()

# 실행 전 파일 file_write02.txt

aaaa

bbbb

cccc

# 실행 후 파일 file_write02.txt

kkka

bbbb

cccc

 

 

8.4.2 w+


mode‘w+’를 사용하면 읽기와 쓰기가 가능 합니다파일이 없으면 생성 하고 파일이 존재 하면 내용을 삭제하고 쓰기를 진행 합니다.

try:

   f = open("F:/Python/file_write02.txt", 'w+')

 

   f.write("kkk")

  

except FileNotFoundError as e:

           print(e)

finally:

   f.close()

# 실행 전 파일 file_write02.txt

aaaa

bbbb

cccc

# 실행 후 파일 file_write02.txt

kkk

 

 

8.4.3 a+


mode‘a+’를 사용하면 읽기와 쓰기가 가능 합니다파일이 없으면 오류가 발성 하고 파일이 존재 하면 내용의 끝에 쓰기를 진행 합니다.

try:

   f = open("F:/Python/file_write02.txt", "a+")

  

   f.write("kkk")

  

except FileNotFoundError as e:

           print(e)

finally:

   f.close()

# 실행 전 파일 file_write02.txt

aaaa

bbbb

cccc

# 실행 후 파일 file_write02.txt

aaaa

bbbb

cccckkk


- copy coding -

 

7. 예외처리

 

코딩을 할 때 가장 중요한 건 오류가 발생하지 않도록 하는 것 이지만 데이터의 오류, 시스템 오류, 네트워크 오류는 어쩔 수가 없습니다.  오류를 예측하고 거기에 대한 대응을 미리 해놓을 수 있는 능력이 더 중요할 수 있습니다.

 

7.1 try ... except


try 블록을 실행 하는 동안 오류가 발생하면 곧바로 except 블록이 실행 되며 오류가 발생하지 않는다면 except 블록은 실행되지 않습니다.

 

7.1.1 발생오류를 모르는 경우

 

발생할 오류의 항목을 모르는 경우 오류 항목을 기입하지 않고 except만 적어서 처리를 하는 경우 입니다.

try:

   이런 저런 명령어 처리

except:

   print(“알 수 없는 오류로 인하여 프로그램이 종료 되었습니다.”)

 

python study

 


7.1.2 발생오류 명기


try 블록에서 발생할 오류에 대해 예상이 가능한 경우 오류 항목을 추가하여 처리하는 경우 입니다.

try:

 fd = open(“filename.txt”, ‘r’)

   line = fd.readline()

except FileNotFoundError:

   print(“요청하신 파일을 찾을 수 없습니다.”)

 

발생할 수 있는 오류가 여러 개인 경우 except를 추가 합니다. 

try:

 fd = open(“filename.txt”, ‘r’)

   line = fd.readline()

except OSError:

   print(“OS 오류가 발생 했습니다.”)

except FileNotFoundError:

   print(“요청하신 파일을 찾을 수 없습니다.”)

except:

 print(“알 수 없는 오류가 발생 했습니다.”)

 

 

7.1.3 else (오류 없는 경우)

 

try 블록을 실행하는 동안 오류가 발생하지 않은 경우에만 실행을 하는 블록 입니다.  finally와의 차이점은 finally는 오류가 발생 해도 실행을 하는 블록 입니다.

try:

 fd = open(“filename.txt”, ‘r’)

   line = fd.readline()

except OSError:

   print(“OS 오류가 발생 했습니다.”)

except FileNotFoundError:

   print(“요청하신 파일을 찾을 수 없습니다.”)

except:

 print(“알 수 없는 오류가 발생 했습니다.”)

else:

   print(“오류가 발생하지 않았습니다.”)

 

 

7.1.4 pass (예외상황 회피)

 

예외 상황이 발생 했을 때 프로세스를 중단 하지 않으면서 예외사항을 무시하고 다음 단계로 넘어가기 위한 방법으로 아무일 없었다는 듯 하단 명령을 실행 합니다.

try:

 fd = open(“filename.txt”, ‘r’)

   line = fd.readline()

except OSError:

   print(“OS 오류가 발생 했습니다.”)

except FileNotFoundError:

   pass

 

 

7.1.5 as (오류 클래스 축약)

 

오류 클래스 명이 긴 경우 as를 이용하여 짧은 이름의  alias에 대입 하여 사용할 수 있습니다.

try:

 fd = open(“filename.txt”, ‘r’)

   line = fd.readline()

except OSError as oe:

   print(oe)

except FileNotFoundError as e:

   print(e)

 

 

7.1.6 finally (무조건 실행)

 

try 블록을 실행 하는 동안 오류가 발생해서 프로그램이 종료 되더라도 꼭 실행을 해야 하는 명령어를 finally 블록에 추가 합니다.  대부분 리소스를 반납해야 하는 close 문들입니다.

try:

 fd = open(“filename.txt”, ‘r’)

   line = fd.readline()

finally:

   fd.close()

 

 

 

7.2 예외 만들기

 

raise를 이용하면 사용자가 임의로 예외를 발생시킬 수 있습니다.


7.2.1 내부 예외 클래스 호출


내부에 정의된 예외사항을 사용자가 임의로 호출하여 사용할 수 있습니다.

a = 100

 

if a <= 150:

           try:

                     raise ValueError

                     b = 2500 / a

           except ZeroDivisionError:

                     print("zero div")

           except ValueError:

                     print("number small")

결과

(base) F:\Python>python except001.py

number small

 

7.2.2 사용자 정의 예외 클래스 호출


사용자가 직접 Exception 클래스를 상속받아 새로운 예외 클래스를 생성하여 호출할 수 있습니다.

class UserError(Exception):

           def __init__(self, value):

                     self.value = value

           def __str__(self):

                     return self.value

 

# 신규 예외사항 사용

a = 100

 

if a <= 150:

           try:

                     raise UserError("Number error")

                     b = 2500 / a

           except ZeroDivisionError:

                     print("zero div")

결과

(base) F:\Python>python except002.py

Traceback (most recent call last):

  File "except002.py", line 12, in <module>

    raise UserError("Number error")

__main__.UserError: Number error

 

 

7.3 with

 

with문은 예외처리 라기 보다는 미리 후선 마무리 작업이 정의되어 있는 명령어 입니다.

with open(“filename.txt”) as fd:

    for line in fd:

        print(line, end="")

 

with문은 Object.enter를 호출하고 자동으로 Object.exit를 호출 하도록 만들어진 것으로 별도의 처리를 해주지 않아도 됩니다.

 

 

7.4 Exception 구조 (Python 3.7)

 

파이썬 내장 예외사항 클래스 계층 구조 입니다.  필요한 예외사항이 있으면 사용하면 됩니다.

BaseException

 +-- SystemExit

 +-- KeyboardInterrupt

 +-- GeneratorExit

 +-- Exception

      +-- StopIteration

      +-- StopAsyncIteration

      +-- ArithmeticError

      |    +-- FloatingPointError

      |    +-- OverflowError

      |    +-- ZeroDivisionError

      +-- AssertionError

      +-- AttributeError

      +-- BufferError

      +-- EOFError

      +-- ImportError

      |    +-- ModuleNotFoundError

      +-- LookupError

      |    +-- IndexError

      |    +-- KeyError

      +-- MemoryError

      +-- NameError

      |    +-- UnboundLocalError

      +-- OSError

      |    +-- BlockingIOError

      |    +-- ChildProcessError

      |    +-- ConnectionError

      |    |    +-- BrokenPipeError

      |    |    +-- ConnectionAbortedError

      |    |    +-- ConnectionRefusedError

      |    |    +-- ConnectionResetError

      |    +-- FileExistsError

      |    +-- FileNotFoundError

      |    +-- InterruptedError

      |    +-- IsADirectoryError

      |    +-- NotADirectoryError

      |    +-- PermissionError

      |    +-- ProcessLookupError

      |    +-- TimeoutError

      +-- ReferenceError

      +-- RuntimeError

      |    +-- NotImplementedError

      |    +-- RecursionError

      +-- SyntaxError

      |    +-- IndentationError

      |         +-- TabError

      +-- SystemError

      +-- TypeError

      +-- ValueError

      |    +-- UnicodeError

      |         +-- UnicodeDecodeError

      |         +-- UnicodeEncodeError

      |         +-- UnicodeTranslateError

      +-- Warning

           +-- DeprecationWarning

           +-- PendingDeprecationWarning

           +-- RuntimeWarning

           +-- SyntaxWarning

           +-- UserWarning

           +-- FutureWarning

           +-- ImportWarning

           +-- UnicodeWarning

           +-- BytesWarning

           +-- ResourceWarning

 

- copy coding -


6.3 내장 함수

 

앞의 예제에서 print 또는 del을 사용해 보았는데 이렇게 파이썬 내부에 정의되어 있는 함수를 내장 함수라 부릅니다그리고 내장 함수는 이미 존재하고 있는 함수로 import로 불러오지 않고 바로 호출해서 사용할 수 있는 함수 입니다.

함수는 이름만 잘 만들어도 반은 먹고 들어간다고 했는데 그 말이 사살인지 확인해 볼까요?

 


6.3.1 abs 


음수, 양수 관계없이 단순히 크기만을 나타내기 때문에 음수를 양수로 변환 하는데 사용하기도 합니다.

>>> abs(3)

3

>>> abs(-3)

3

>>> abs(0.0002)

0.0002

>>> abs(-0.0002)

0.0002

 

 

6.3.2 all


자료형을 입력 받아 내부 요소가 모두 참이면 True를 리턴 하고 하나라도 거짓이 있으면 False를 리턴 합니다.

>>> all([1,2,3])

True

>>> all([4,5,1,3])

True

>>> all([4,5,1,0,3])

False

>>> all(('a', 'b', 'c'))

True

>>> all(('a', 'b', 'c', ''))

False

   

python study



6.3.3 any


자료형을 입력 받아 내부 요소가 모두 거짓이면 False를 리턴 하고 하나라도 참이 있으면 True를 리턴 합니다.

>>> any([4,5,1,0,3])

True

>>> any(('', 0))

False


 

6.3.4 chr


아스키(ASCII) 코드값을 입력 받아 문자를 출력 합니다.

# 10 진수

>>> chr(112)

'p'

>>> chr(80)

'P'

# 16 진수

>>> chr(0x50)

'P'

>>> chr(0x70)

'p'

 

 

6.3.5 dir


dir는 입력 받은 객체에 대해 사용할 수 있는 변수와 메소드를 나열해 줍니다.

입력값이 숫자인 경우

>>> dir(1)

['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']

 

입력값이 문자인 경우

>>> dir('a')

['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

 

 

6.3.6 divmod


함수 명에서도 알 수 있듯이 나눗셈의 몫과 나머지를 구하는 함수 입니다숫자가 2개 필요하고 결과를 튜플 형태로 리턴 합니다.

>>> divmod(20, 3)

(6, 2)


 

6.3.7 enumerate


리스트, 튜플, 문자열등을 입력 받아 인텍스와 함꼐 리턴 합니다.

>>> a = [1, 2, 3, 4, 5]

>>> for i, n in enumerate(a):

...   print(i, n)

...

0 1

1 2

2 3

3 4

4 5


  

6.3.8 eval


문자열을 명령어로 변환 하고 실행합니다변환된 명령어가 실행할 수 없으면 오류가 발생 합니다.

# 오류 발생

>>> eval('a' + 'b')

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

  File "<string>", line 1, in <module>

NameError: name 'ab' is not defined

 

# 정상 작동

>>> ab = 555

>>> eval('a' + 'b')

555


 

6.3.9 filter


filter(function, iterable)형태로 iterable 값들을 function을 통해 필터링 하여 결과 값을 반환 합니다. function에 어떤 조건의 데이터만 추출 하는지 정의가 되어야 합니다.

>>> def is_even(x):

...    if x % 2 == 0:

...       return True

...    else:

...       return False

...

>>> r = filter(is_even, [1,2, 3, 4, 5, 6,7])

>>> 

>>> for i in r:

...    print(i)

...

2

4

6

 

lambda도 함수와 같은 역할을 하고 반복 사용하지 않는다고 했는데 기억하시나요.

>>> r2 = list(filter(lambda x : x % 2 == 0,[1,2, 3, 4, 5, 6,7]))

>>> r2

[2, 4, 6]


 

6.3.10 hex


정수를 입력 받아 16진수를 리턴 합니다.

>>> hex(5)

'0x5'

>>> hex(10)

'0xa'

>>> hex(15)

'0xf'


 

6.3.11 id


입력된 객체의 주소값을 리턴 합니다.

>>> a = 'a'

>>> b = a

>>> id(a)

2998919036464

>>> id('a')

2998919036464

>>> id(b)

2998919036464

# a 값 변경

>>> a = 'b'

>>> id(a)

2998919034784

>>> id(b)

2998919036464

a, b, ‘a’는 모두 같은 주소를 바라보고 있습니다. a 값을 변경하면 a만 다른 주소를 바라보게 됩니다.


 

6.3.12 input


사용자로부터 입력값을 받아야 하는 경우 사용하며 input([prompt])를 이용하여 콘솔 창에 프롬프트가 나타나도록 할 수 있습니다.

>>> x = input()

Y

>>> x = input("계속 진행 하시겠습니까?(Y/N) :")

계속 진행 하시겠습니까?(Y/N) :Y

>>> x

'Y'


 

6.3.13 int


정수 형태의 문자나 정수, 실수 등을 입력 받아 정수를 반환 합니다반올림은 하지 않고 실수 형태의 문자는 오류가 발생 합니다.

>>> int('30')

30

>>> int('-45')

-45

>>> int(3.5444)

3

>>> int(-4.99999)

-4

>>> int('8.9999')

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

ValueError: invalid literal for int() with base 10: '8.9999'

 

다른 진수의 값을 10진수로 반환 합니다.

# 2진수 -> 10진수

>>> int('011', 2)

3

# 16진수 -> 10진수

>>> int('0xA', 16)

10

 


6.3.14 isinstance


isinstance(object, type) 형태로 사용하며 objecttype의 인스턴스 인가 확인하여 참이면 True, 거짓이면 False를 반환 합니다. type에는 복수의 데이터 형, 클래스 등이 포함될 수 있습니다.

# 정수가 정수냐?

>>> isinstance(3, int)

True

# 실수가 정수냐?

>>> isinstance(3.0, int)

False

# 실수가 정수 또는 실수냐?

>>> isinstance(3.0, (int, float))

True

# 클래스가 클래스냐?

>>> class OneClass:

...    a = 'aaa'

...

>>> b = OneClass()

>>> c = isinstance(b, OneClass)

>>> c

True

 


6.3.15 len


문자열의 길이 또는 요소의 개수를 리턴 합니다숫자의 개수는 구하지 못합니다.

>>> len('abcdefg')

7

>>> len([1, 2, 3, 4])

4

>>> len(['a', 'b', 'cc'])

3

>>> len((1, 2, 3, 4, 5))

5

>>> len(123)

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

TypeError: object of type 'int' has no len()

 


6.3.16 list


데이터를 입력 받아 list로 반환 합니다.

>>> list('abcdefg')

['a', 'b', 'c', 'd', 'e', 'f', 'g']

>>> list([1,2,3,4,5])

[1, 2, 3, 4, 5]

>>> list((1,2,3,4,5))

[1, 2, 3, 4, 5]


  

6.3.17 map


map(function, iterator)형태로 iterator의 요소들을 하나씩 function에 적용하여 값을 리턴 받아 옵니다.

>>> 

>>> def addFunc(n):

...    return n + n

...

>>> nums = (1, 2, 3, 4, 5)

>>> res = map(addFunc, nums)

>>> print(list(res))

[2, 4, 6, 8, 10]

 

lambda를 이용하여 function을 대체할 수 있습니다.

>>> nums = (1, 2, 3, 4, 5)

>>> result = map(lambda x: x + x, nums)

>>> print(list(result))

[2, 4, 6, 8, 10]

 


6.3.18 max


입력된 값 중 최대 값을 반환 합니다문자와 숫자는 비교할 수 없습니다.

>>> max("PYTHON python")

'y'

>>> max([1, 2, 3, 4.5])

4.5

  


6.3.19 min


입력된 값 중 최소 값을 반환 합니다. 문자와 숫자는 비교할 수 없고 문자 보다 blank가 작은 값입니다.


 

>>> min("PYTHON python")

' '

>>> min([1, 2, 3, 4.5])

1



6.3.20 oct


정수를 입력 받아 8진수로 변환 하여 리턴 합니다.

>>> oct(8)

'0o10'

>>> oct(10)

'0o12'

 


6.3.21 open


open(filename, [mode])의 형태로 filename의 파일을 오픈 합니다오픈 하는 조건은 mode에 따라 달라집니다모드가 생략 되면 읽기 모드로 오픈 합니다.

f = open(“test_file”, “r”)

 

 

6.3.22 ord


문자를 입력 받아 ASCII 코드의 10진수 번호로 리턴 합니다. chr()와 반대 개념입니다.

>>> ord('a')

97

>>> ord('A')

65


 

6.3.23 pow


pow(x, y)x의 값을 y만큼 제곱한 결과를 리턴 합니다.

>>> pow(2, 3)

8

>>> pow(3, 3)

27

 


6.3.24 range


range([start,] stop [,step])의 형태로 일련 번호를 리턴 하며 인수가 하나, , 셋 모두 선택적으로 사용 가능 합니다.


- 인수가 하나인 경우

0 부터 stop 보다 작으며 1씩 증가 하는 값. (0 <= list < stop) 

>>> range(10)

range(0, 10)

>>> list(range(10))

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 

- 인수가 둘 경우

start 부터 stop 보다 작으며 1씩 증가 하는 값. (start <= list < stop)

>>> range(5, 10)

range(5, 10)

>>> list(range(5, 10))

[5, 6, 7, 8, 9]

 

- 인수가 셋 경우

start 부터 stop 보다 작으며 step씩 증가 하는 값. (start <= list < stop)

. >>> range(5, 10, 2)

range(5, 10, 2)

>>> list(range(5, 10, 2))

[5, 7, 9]

 

 

6.3.25 round


round(number[, ndigits])의 형태로 자릿수가 생략 되면 반올림 한 값을 리턴하고 자릿수가 입력 되면 정해진 자릿수 까지 반올림 된 값으로 표현 합니다.

>>> round(3.5)

4

>>> round(4)

4

>>> round(4.55555, 3)

4.556

 

6.3.26 sorted


입력값을 정렬하여 리턴 하는 함수 입니다.

>>> sorted("python")

['h', 'n', 'o', 'p', 't', 'y']

>>> sorted(['a', 'd', 'b', 'k', 'c'])

['a', 'b', 'c', 'd', 'k']

>>> sorted([5,7,2,4,6,8])

[2, 4, 5, 6, 7, 8]

>>> sorted([5,7,2,4,6,8,2])

[2, 2, 4, 5, 6, 7, 8]

>>> sorted((5,7,2,4,6,8,2))

[2, 2, 4, 5, 6, 7, 8]

 

 

6.3.27 str


입력 받은 값을 문자열 형태로 반환 합니다숫자를 문자와 결합 할 수 있습니다.

>>> str(123)

'123'

>>> str(345) + "abc"

'345abc'

>>> str("python".upper())

'PYTHON'

 

6.3.28 sum


입력된 값을 모두 더한 합을 리턴 합니다.

>>> sum((1, 2, 3))

6

>>> sum([1, 2, 3])

6

 

6.3.29 tuple


입력된 값을 튜플로 형변환 하여 반환 합니다.

>>> tuple("python")

('p', 'y', 't', 'h', 'o', 'n')

>>> tuple([1, 2, 3])

(1, 2, 3)

>>> tuple(('a', 'b', 'c'))

('a', 'b', 'c')

 

6.3.30 type


입력 값의 자료형을 리턴 합니다.

>>> type('a')

<class 'str'>

>>> type(1)

<class 'int'>

>>> type([])

<class 'list'>

 

 

6.3.31 zip


반복형 데이트를 튜플 형태의 쌍으로 묶어 리턴 합니다.

>>> a = [1, 2, 3, 4, 5]

>>> b = ['a', 'b', 'c', 'd', 'e']

>>> for i in zip(a, b):

...    print(i)

...

(1, 'a')

(2, 'b')

(3, 'c')

(4, 'd')

(5, 'e')

>>> list(zip(a, b))

[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e')]

 

서로 쌍의 개수가 맞지 않으면 작은 요소의 수에 맞줍니다.

>>> a = [1, 2, 3, 4, 5]

>>> b = ['a', 'b', 'c', 'd']

>>> list(zip(a, b))

[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]


- copy coding -


1···37383940414243···61

+ Recent posts