기초 물방울/Python

파이썬(Python)공부 기록(입출력~예외처리)

Weeding 2022. 3. 22. 17:32
반응형
SMALL

입출력 / 파일 읽고 쓰기

 

 

input()

  • 파이썬에서 데이터 입력을 받을때 사용
  • 입력받은 후에 필요한 데이터 형태로 변환해주는 작업이 필요
  • input은 입력되는 모든 것을 문자열로 취급

ex)

a = input()

I can do it, more more

a

'I can do it, more more'

 

 

ex)

input("질문 내용")

 

number = input("숫자를 입력하세요: ")

숫자를 입력하세요:

 

 

프롬프트에 3을 입력하면 변수 number 3이 대입

number = input("숫자를 입력하세요: ")

숫자를 입력하세요 : 3

print(number)

3

 

 

** number는 숫자가 아닌 문자열 **

type(number)

<class 'str>

 


큰따움표(")로 둘러싸인

문자열은 + 연산과 동일함.

 

 

ex)

print("I" "can" "do it")

Icando it

print("I"+"can"+"do it")

Icando it

 

 

문자열 띄어쓰기는 콤마로 한다.

print("I", "can", "do it")

I can do it

 

 

한 줄에 결과값 출력하기

for문을 활용하여 결과값을 계속 이어서 출력하려면 매개변수 end를 사용해야함.

 

ex)

for i in range(10):

    print(i, end=' ')

 

0 1 2 3 4 5 6 7 8 9

 


소수 판별 알고리즘

 

소수

2보다 큰 자연수 중에서 1과 자기 자신을 제외한 자연수로는 나누어떨어지지 않는 자연수

 

ex) 

# 기본적인 소수 판별 방법(2부터 n-1까지 돌려보기)

def is_prime_number(x):

   # 2부터 (x -1)까지의 모든 수를 확인

   for i in range(2, x):

     # x가 해당 수로 나누어 떨어지면

     if x % i == 0:

         return False

   return True

 

print(is+prime_number(4))   # False

 


 

파일 생성하기 

 

f = open("새 파일.txt", 'w')

f.close()

 

 

open()

  • "파일 이름"과 "파일 열기 모드"를 입력값으로 받고 결과값으로 파일 객체를 돌려줌.
  •  파이썬의 내장 함수.

 

 

open()의 파일 열기 모드

  • r : 읽기모드 
  • w : 쓰기모드
  • a : 추가모드

 

ex)1

f = open("C:/doit/새파일.txt", 'w')

for i in range(1, 11):

    data = "%d번째 줄입니다.\n" %  i

    f.write(data)

f.close()

 

========================

 

ex)2

for i in range(1, 11):

    data = "%d번째 줄입니다.\n" % i

    print(data)

 

 

두 프로그램의 다른 점은 data를 출력하는 방법

첫번째 방법은 모니터 화면 대신 파일에 결과값을 적는 방법

두번째 방법은 우리가 계속 사용해 왔던 모니터 화면에 출력하는 방법

두 방법의 차이점은

print 대신 파일 객체 f의 write 함수를 사용

 

명령 프롬프트 창에 첫번째 예제를 실행해보면

 

C:\Users> cd C:\doit

C:\doit>python writedata.py

C:\doit>

 

 


 

readline 함수

 

# readline_test.py

f = open("C:/doit/새파일.txt", 'r')

line = f.readline()

print(line)

f.close()

 

↓↓

위 예는 f.open("새파일.txt", 'r)로 파일을 읽기 모드로 연 후에

redaline() 을 사용해서 파일의 첫 번째 줄을 읽어 출력하는 경우이다.

앞에서 만든 새파일.txt를 수정하거나 지우지 않았다면

위 프로그램을 실행했을 때 새파일.txt의 가장 첫 번째 줄이 화면에 출력될 것임.

 

↓↓

1번째 줄입니다.

 

 

 

 

만약 모든 줄을 읽어서 화면에 출력하고 싶다면

↓↓

 

# readline_all.py

f = open("C:/doit/새파일.txt", 'r')

while True:

    line = f.readline()

    if not line: break

    print(line)

f.close()

 

↓↓

즉, while True: 무한 루프 안에서 f.readline() 을 사용해 파일을 계속해서 한 줄씩 읽어 들인다.

만약 더 이상 읽을 줄이 없으면 break를 수행한다.

(readline()은 더 이상 읽을 줄이 없을 경우 빈 문자열("")을 리턴함)

 

 

while True:

    data = input()

    if not data: break

    print(data)

 

 


 

유니코드(Unicode)

  • 전 세계의 모든 문자를 처리 가능하도록 설계된 방식
  • utf-8도 unicode에 기반한 인코딩 방식
  • 1바이트로는 부족했으니 용량을 크게 확장한 2바이트(2^16 = 65,536)를 사용
  • 문제점 : 어떠한 글자들을 1바이트, 2바이트로 읽을지 정해줘야함
  • 문제점을 보완하기 위해 인코딩 방식이 존재함.

 

인코딩

  • 컴퓨터가 어떤 글자를 만났을 때 얼만큼씩 읽어야 하는지 미리 말해주는 것
  • UCS-2 / UCS-4 = 코드 포인트를 코드화한 방식
  • UTF-8 / UTF-7 / UTF-16 / UTF-32 = 변환 인코딩 형식

 

UTF-8 

  • 8-bit Unicode Transformation Format
  • 문자열집합과 인코딩 형태를 8비트 단위로 한다는 의미
  • 유니코드 한 문자를 나타내기 위해서는 1바이트 ~ 4바이트까지 사용
  • 이를 가변형 인코딩 방식이라 부르는데
  • 아스키문자들은 1바이트로 하나의 문자를 표현할 수 있는데, 
  • 모든 문자를 4바이트를 사용한다면 지나친 저장소의 낭비가 됨.
  • → 따라서 아스키코드로 표현 가능한 것들은 1바이트로 표현하고
  • → 그것이 안된다면 2바이트 이상을 사용하는 방식이 UTF-8

 


 

with문

with <compress> as <variable>:

<block>

 

파일을 열었으면 닫아주는 일을 빼먹지 말아야 하는데,

보통은 close() 등과 같은 메소드를 사용하지만 여기에는 숨은 문제점이 존재함.

파일 처리를 수행하는 도중에 오류가 발생하게 되면 close()문을 실행할 수 없고

그렇게 되면 이 파일은 영원히 닫을 수가 없게 됨.

 

with 문은 그 구문을 실행했을 때 오류가 발생하든 안하든 마지막에 close를 해주는 것.

 

 

ex)

with open('textfile.txt', 'r') as file:

    contents = file.read()

 

# 위 구문과 동일한 내용

file = open('textfile.txt', 'r')

contents = file.read()

file.close()

 


 

예외처리 ★

추 후에 추가 정리 필요!

 

=기본형태=

 

try:

    ...

except [발생 오류[as 오류 메시지 변수]]:

    ...

 

  • try 블록 수행 중 오류가 발생하면 except 블록이 수행됨.
  • 하지만 try 블록에서 오류가 발생하지 않는다면 except 블록은 수행되지 않음.
  • (발생 오류와 오류 메시지 변수까지 포함한 except문)

 

 

ex)

try:

    4 / 0

except ZeroDivisionError as e:

    print(e)

 

위처럼 4를 0으로 나누려고 하면 ZeroDivisionError가 발생하여 

except 블록이 실행되고 변수 e에 담기는 오류 메시지를 다음과 같이 출력.

 

= 결과값: division by zero

 

 

 

try .. finally

  • try문에서는 finally절을 사용할 수 있음.
  • finally절은 try문 수행 도중 예외 발생 여부에 상관없이 항상 수행됨.
  • 보통 finally절은 사용한 리소스를 close 해야 할 때 많이 사용됨.

 

ex)

f = open('foo.txt', 'w')

try:

    # 무언가를 수행한다.

finally:

    f.close()

 

 

↓↓

foo.txt 파일을 쓰기 모드로 연 후에 try문을 수행한 후

예외 발생 여부와 상관없이 finally절에서 f.close()로 열린 파일을 닫을 수 있다.

 

 

 


Byte Order Mark = BOM

파일이 어떤 인코딩으로 저장되었는지를 나타내는 하나의 사인

 

 

ord('가')

'가'에 해당하는 유니코드 10진수 값

 

hex(x)

x에 해당하는 16진수 값

 

bin

이진수로 바꾸는것

 

반응형
LIST