반응형

클래스 상속(Class Inheritance)

클래스는 상속을 통해 다른 클래스의 멤버 메서드 및 속성과 같은 특성을 상속할 수 있습니다.

다른 클래스를 상속하는 클래스를 자식 클래스라고 합니다. 반면에 다른 클래스에 의해 상속된 클래스를 부모 클래스라고 합니다.

자식은 여러 부모 클래스에서 상속할 수 있지만 부모 클래스는 여러 자식 클래스에서 상속될 수 있습니다.

 

Python에서 상속의 간단한 예를 살펴보겠습니다. 다음 스크립트에서 하나의 메서드 display_text() Parent 클래스를 정의합니다. 그리고 Parent 클래스를 상속하는 Child라는 자식 클래스를 선언합니다.

클래스에서 상속하려면 자식 클래스 이름 뒤에 오는 괄호 안에 부모 클래스 이름을 전달하기만 하면 됩니다.

 

여기서, pass 키워드는 코드가 구문상 필요는 하지만 프로그램이 아무 작업도 하지 않기를 원하는 경우 사용합니다.

클래스나 함수에서 pass키워드를 사용하는 경우 클래스가 내부 동작은 필요없고, 의미적으로 껍데기만 필요한 경우에 사용합니다. 아래 스크립트의 chile클래스는 내부에 속성이나 메서드가 하나도 없이 빈 껍데기의 클래스를 만들었습니다.

 

class Parent:

  def display_text(self):

    self.id = 10

    print("A function inside the parent class")

 

class Child(Parent):

  pass

 

child클래스의 객체를 만들고 부모 클래스 내의 메서드인 display_text()함수와 id를 호출한 결과입니다. 출력은 display_text() 메서드가 Child 클래스 내부에 정의되어 있지 않더라도 Child 클래스 객체에서 display_text() 메서드를 성공적으로 호출할 수 있음을 보여줍니다.

 

child = Child()

child.display_text()

print(child.id)

 

Output:

A function inside the parent class

10

 

클래스 상속 예제

자식 클래스와 부모 클래스 사이에는 is-a 관계가 있습니다. 상속의 기본 개념은 다양한 클래스 간에 공통되는 멤버 속성 및 메서드를 부모 클래스 내부에 그룹화할 수 있고 자식 클래스에 고유한 멤버 및 속성을 자식 클래스 내부에 구현할 수 있다는 것입니다.

 

다음 스크립트는 두 개의 속성 name area와 하나의 메소드 display_shape_attr()이 있는 Shape라는 클래스를 생성합니다.

class Shape:

  def set_shape_attr(selfnamearea):

    self.shape_name = name

    self.area = area

 

  def display_shape_attr(self):

    print("The shape name is ", self.shape_name)

    print("The shape area is "self.area)

 

 

Shape 클래스를 상속받는 두 개의 자식 클래스를 만들어 보겠습니다. 첫 번째 클래스는 원의 반지름(radius) 속성이 있고 반지름 값을 표시하는 메서드를 갖는 Circle클래스를 만들었습니다. Circle Shape 클래스 사이의 관계는 Circle is-a Shape인 것처럼 is-a입니다.

 

class Circle(Shape):

  def set_circle_attr(selfradius):

    self.radius = radius

 

  def display_circle_attr(self):

    print("The radius of the circle is ", self.radius)

 

Shape 클래스를 상속하는 Square라는 또 다른 클래스를 만들어 보겠습니다. Square 클래스에는 꼭지점 개수 속성과 이 꼭지점 값을 표시하는 메서드로 구성되어 있습니다.

 

class Square(Shape):

  def set_square_attr(selfvertices):

    self.vertices = vertices

 

  def display_square_attr(self):

    print("Total number of vertices in a square ", self.vertices)

 

Circle Square 클래스에는 모두 name area라는 두 가지 공통 속성이 있음을 알 수 있습니다. 공통 속성은 부모 클래스인 Shape 클래스에서 구현되었습니다. 반경 및 꼭짓점과 같은 특정 속성은 각각 Circle Square 클래스에서 구현됩니다.

다음 스크립트는 Circle 클래스의 객체를 생성하고 이름, 면적 및 반경 속성 값을 표시합니다.

circle = Circle()

 

# calling parent class methods

circle.set_shape_attr("Circle", 200)

circle.display_shape_attr()

 

# calling child class methods

circle.set_circle_attr(500)

circle.display_circle_attr()

 

Output:

The shape name is  Circle

The shape area is  200

The radius of the circle is  500

 

마찬가지로 다음 스크립트는 Square 클래스의 객체를 생성하고 이름, 면적 및 꼭지점 개수 속성의 값을 표시합니다.

square = Square()

 

# calling parent class methods

square.set_shape_attr("Square", 230)

square.display_shape_attr()

 

# calling child class methods

square.set_square_attr(4)

square.display_square_attr()

 

Output:

The shape name is  Square

The shape area is  230

Total number of vertices in a square  4

 

자식클래스를 통해 부모 클래스의 생성자 호출하기

부모 클래스와 자식 클래스 모두에서 생성자를 정의할 수 있습니다. 그런 다음 자식 클래스 생성자를 사용하여 부모 클래스 생성자를 초기화할 수 있습니다.

다음 스크립트는 Shape라는 상위 클래스를 정의합니다.

 

class Shape:

  def __init__(selfnamearea):

    self.shape_name = name

    self.area = area

 

  def display_shape_attr(self):

    print("The shape name is ", self.shape_name)

    print("The shape area is ", self.area)

 

다음 스크립트는 Shape 상위 클래스를 상속하는 Circle 하위 클래스를 정의합니다. Circle 클래스의 생성자를 보십시오. 이름, 면적 및 반경의 세 가지 매개변수를 사용하였습니다.

생성자 내에서 super() 키워드는 상위 클래스를 참조하는 데 사용됩니다.

상위 클래스 생성자는 super().__init__() 메서드를 사용하여 호출되고 circle클래스의 __init__()에서 입력받은 name area 매개변수의 값은 상위 클래스 생성자에 전달됩니다. 세 번째 매개변수는 자식 클래스 속성, 즉 반경을 초기화합니다.

class Circle(Shape):

  def __init__(selfnamearearadius):

    부모 클래스의 생성자를 호출

    super().__init__(name, area)

    self.radius = radius

 

  def display_circle_attr(self):

    print("The radius of the circle is ", self.radius)

 

이제 Circle 클래스의 개체를 만들 때 세 개의 매개변수 값을 전달합니다. 처음 두 매개변수 값은 부모 클래스 속성인 name area를 초기화하는 반면, 세 번째 매개변수는 자식 클래스 속성인 radius를 초기화합니다.

circle = Circle("Circle", 700, 400)

 

# calling parent class methods

circle.display_shape_attr()

 

# calling child class methods

circle.display_circle_attr()

 

Output:

The shape name is  Circle

The shape area is  700

The radius of the circle is  400

반응형
반응형

객체지향 프로그래밍(Object-Oriented Programming)

객체 지향 프로그래밍은 실제 객체의 관점에서 소프트웨어를 모델링하는 프로그래밍입니다.

객체라는 용어는 속성이 있고 일부 기능을 수행할 수 있는 모든 것을 나타냅니다. 객체 지향 프로그래밍에서는 어떤 속성을 갖고 어떤 기능을 수행할 수 있으면 객체로 모델링 할 수 있습니다.

 

예를 들어 비행 시뮬레이터 게임을 개발 중이라면 비행기의 다음과 같은 속성과 기능을 확인할 수 있으므로 객체로 모델링 할 수 있습니다.

속성 : 비행기의 모델, 이름, 엔진 수

기능 : 비행기 시작, 비행기 정지, 비행기 이동

 

유사하게, 조종사는 비행기와 다른 속성과 기능을 가지고 있으므로 객체로 모델링 될 수 있습니다.

속성 : 조종사의 이름, 나이, 성별

기능 : 비행기 탑승, 비행기에서 내리기, 좌석 변경

 

클래스 정의와 객체 생성

객체를 생성하기 전에 클래스를 먼저 생성해야 합니다. 클래스는 객체에 대한 지도나 청사진으로 생각할 수 있습니다. 클래스와 객체의 관계는 계획과 집의 관계와 유사합니다. 평면도를 보면 그 집에 몇 개의 침실, 식당, 화장실 등이 있을 것인지 알 수 있습니다. 마찬가지로 클래스를 보면 객체의 속성과 기능을 알 수 있습니다. 단일 클래스를 사용하여 여러 개체를 만들 수 있습니다.

 

클래스를 생성하려면 class 키워드 뒤에 클래스 이름과 세미콜론을 사용해야 합니다. 다음 스크립트는 class_method()함수를 하나 갖는 NewClass라는 클래스를 생성해 보았습니다.

 

class NewClass:

  def class_method(self):

    print("Hello this is a method inside a class")

 

클래스의 객체를 생성하려면 클래스 이름 뒤에 한 쌍의 괄호를 작성해야 합니다. 다음 스크립트는 NewClass 클래스에 대해 nc라는 개체를 만듭니다. nc 객체를 사용하여 새 클래스의 함수(메서드)를 호출할 수 있습니다. 이렇게 하려면 아래와 같이 점 연산자 다음에 이름을 추가해야 합니다.

 

nc = NewClass()

nc.class_method()

 

Output:

Hello this is a method inside a class

 

클래스에 변수와 메서드 선언

객체는 속성과 메서드를 가질 수 있습니다. 속성과 함수가 있는 객체를 생성하려면 해당 속성과 메서드를 해당 클래스에 추가해야 합니다. 클래스 내부에 정의된 속성 및 메서드를 멤버 속성 및 멤버 메서드라고 합니다.

 

다음 스크립트는 하나의 멤버 메서드 class_method()와 두 개의 멤버 속성 color id를 사용하여 클래스를 만들었습니다.

Python에서는 인스턴스 메서드의 첫 번째 속성으로 self를 전달해야 합니다. 인스턴스 메서드는 클래스 객체를 사용하여 액세스할 수 있는 메서드입니다. 마찬가지로 인스턴스 변수를 생성하려면 인스턴스 메소드 내부에 이러한 변수를 정의해야 하며 속성 이름 앞에 키워드 self를 접두사로 붙여야 합니다.

 

class NewClass:                # class 선언

  def class_method(self):      # 멤버 메서드

    self.color = 'red'         # 멤버 변수

    self.id = 24

    print("Hello this is a method inside a class")

 

다음 스크립트는 NewClass 클래스를 nc 객체로 만들고 nc객체를 통해서 NewClass클래스 안의 메서드나 속성에 접근하는 예제입니다.

nc = NewClass()

nc.class_method()

print(nc.color)

print(nc.id)

 

Output:

Hello this is a method inside a class

red

24

 

단일 클래스에서 여러 개체를 만들 수 있습니다. 다음 스크립트에서는 동일한 NewClass 클래스를 사용하여 다른 개체 nc1nc2를 정의하고 해당 클래스의 멤버 메서드 및 멤버 특성에 액세스합니다. 여기서, nc1nc2 colorid속성 값은 동일합니다. 일반적으로 동일한 클래스의 다른 객체에 대한 인스턴스 멤버의 값은 다릅니다.

 

nc1 = NewClass()

nc2 = NewClass()

nc1.class_method()

print(nc1.color)

nc2.class_method()

print(nc2.color)

 

Output:

Hello this is a method inside a class

red

Hello this is a method inside a class

red

 

다음 스크립트는 멤버 메서드 class_method() color id 속성에 값을 할당하는 데 사용되는 두 개의 매개 변수 값을 받는 클래스를 만들어 보았습니다.

 

class NewClass:               

  def class_method(selfmy_colormy_id):

    self.color = my_color

    self.id = my_id

    print("Hello this is a method inside a class")

 

nc1nc2객체를 만들고 NewClass클래스의 class_method()함수를 호출하고 함수의 매개변수에 각각 다른 값을 입력해 준 후 클래스의 color속성을 출력해 보면 객체로 호출할 당시의 함수의 매개변수로 입력했던 값이 출력됩니다.

 

nc1 = NewClass()

nc1.class_method("Green", 18)

nc2 = NewClass()

nc2.class_method("Red", 22)

print(nc1.color)

print(nc2.color)

 

Output:

Hello this is a method inside a class

Hello this is a method inside a class

Green

Red

 

class_method의 매개변수는 self, my_color, my_id 3개를 입력 받습니다. 그런데 일반 함수와 달리 메서드의 첫번째 매개변수는 self는 특별한 의미를 갖습니다.

클래스에서 인스턴스 메서드를 정의할 때는 self를 사용하였지만 실제 객체를 선언해서 이 메서드를 호출할 때는 self를 제외한 2개의 매개변수만 사용됩니다.

다음 그림처럼 nc1.class_method(“Green”, 18)을 호출하면 class_method메서드의 첫 번째 매개변수 self에는 class_method()를 호출한 객체 nc1이 자동으로 전달됩니다.

 

  

클래스 생성자

생성자는 클래스의 객체를 생성할 때 자동으로 호출되는 함수입니다. 생성자 함수의 이름은 항상 __init__()입니다.

클래스의 객체를 생성하는 것을 클래스 초기화라고도 합니다.

 

다음 스크립트는 color id 속성을 초기화하는 데 사용되는 두 개의 매개변수 값을 허용하는 생성자 메서드를 사용하여 클래스를 만듭니다. 이 클래스에는 color id 속성 값을 표시하는 display_vars() 메서드도 포함되어 있습니다.

 

class NewClass:             

  def __init__(selfmy_colormy_id):

    self.color = my_color

    self.id = my_id

 

  def display_vars(self):

    print(self.color)

    print(self.id)

 

사용자 정의 생성자가 있는 클래스의 개체를 만들 때 클래스 이름 뒤에 오는 괄호를 사용하여 생성자 매개변수의 값을 전달해야 합니다.

다음 스크립트는 NewClass 클래스에 대한 객체 nc1을 생성합니다. 생성자에 전달되는 값은 Yellow10입니다. 이 값은 각각 nc1 객체의 color id 속성에 할당됩니다. 생성자를 사용하면 추가 메서드를 정의하지 않고도 멤버 속성을 초기화할 수 있음을 알 수 있습니다.

 

nc1 = NewClass("Yellow", 10)

nc1.display_vars()

 

Output:

Yellow

10

 

클래스 멤버 vs 인스턴스 멤버

파이썬의 객체 지향 프로그래밍에서 클래스 멤버 속성과 메서드, 인스턴스 멤버 속성과 메서드의 차이점을 이해하는 것은 매우 중요합니다.

 

클래스 속성 및 메서드

클래스 속성은 클래스 이름을 통해 액세스할 수 있는 속성이며, 그 값은 다른 객체 간에 공유됩니다.

클래스 속성은 생성자 외부에서 선언됩니다.

클래스 메서드는 클래스 이름을 통해 액세스할 수 있는 메서드입니다.

클래스 메서드에는 매개변수 값이 포함되어 있지 않습니다.

 

인스턴스 속성 및 클래스

인스턴스 속성은 인스턴스(객체)에 고유한 속성이며 클래스의 다른 객체 간에 공유되지 않습니다. 클래스의 각 개체에는 인스턴스 변수의 복사본이 있습니다.

인스턴스 속성은 인스턴스 이름을 통해서만 액세스할 수 있습니다.

인스턴스 속성은 인스턴스 메소드 내에서 선언됩니다.

 

다음 스크립트는 하나의 클래스 속성 num_objects와 두 개의 인스턴스 속성 color id를 사용하여 NewClass라는 새 클래스를 만듭니다. 이 클래스에는 생성자, 클래스 메서드 show_object_counts() 및 인스턴스 메서드 display_vars()도 포함되어 있습니다.

NewClass 클래스의 객체가 생성될 때마다 생성자는 인스턴스 속성인 color id의 값을 초기화합니다. 생성자는 클래스 속성 num_objects의 값을 1씩 증가시킵니다. 인스턴스 메서드 display_vars()는 인스턴스 속성 color id의 값을 표시합니다. show_object_counts() 클래스 메서드는 객체 counts 변수의 값을 표시합니다.

 

class NewClass:        

  num_object = 0    # class variable

     

  def __init__(selfmy_colormy_id):  # constructor

    self.color = my_color               # class member variable

    self.id = my_id                     # class member variable

    NewClass.num_object += 1

 

  def display_vars(self):               # instance method

    print(self.color)

    print(self.id)

 

  def show_object_counts():             # class method

    print("Number of objects:", str(NewClass.num_object))

 

NewClass 클래스의 첫 번째 객체를 생성하면 다음 스크립트와 같이 num_objects 값이 1로 증가합니다.

 

nc1 = NewClass("Yellow", 10)            # creating a class object

nc1.display_vars()                           # calling instance method

NewClass.show_object_counts()         # calling class method

 

Output:

Yellow

10

Number of objects: 1

 

NewClass 클래스의 두 번째 객체를 생성하면 클래스 변수 num_objects의 값은 모든 객체 간에 공유되므로 이전 1에서 1이 더해져 2가 됩니다.

 

nc2 = NewClass("Black", 12)            # creating a class object

nc2.display_vars()                          # calling instance method

NewClass.show_object_counts()        # calling class method

 

Output:

Black

12

Number of objects: 2

반응형
반응형

모듈 (Modules)

 

모듈은 Python에서 중요한 역할을 합니다. 모듈에서 임의로 명명된 속성을 바인딩하고 참조할 수 있습니다. 또한 큰 프로그램을 관리 및 처리하기 쉬운 작은 프로그램으로 나누는 데 사용됩니다. 공통 파일에 저장된 변수, 함수 및 클래스 집합을 모듈이라고 합니다. 일반적으로 사용되는 기능은 다양한 프로그램에서 정의를 복사하는 대신 모듈에서 정의하고 가져올 수 있습니다. 확장자가 .py인 모든 Python 파일은 모듈 역할을 합니다.

 

import module_name                 # 모듈 임포트

module_name.variable                # 모듈 변수 사용

module_name.func()                  # 모듈 함수 사용

 

다음 스크립트는 add, sub, mul, div함수와 a변수를 만든 예제입니다. 아래 스크립트를 Calculator.py로 저장합니다.

a = 100

def add(xy):

  print("Addition:", x+y)

def sub(xy):

  print("Subtraction:", x-y)

def mul(xy):

  print("Multiplication:", x*y)

def div(xy):

  print("Division:", x/y)

 

위에서 만든 Calculator.py를 모듈로 임포트해서 사용해 보겠습니다.

 

import Calculator

 

print(Calculator.a)

Calculator.add(100, 200)

Calculator.sub(300, 100)

Calculator.mul(100, 100)

Calculator.div(400, 200)

 

모듈 별명 (Module Aliasing)

모듈은 임포트할 때 별칭으로 변경할 수 잇습니다.

 

다음 스크립트는 Calculator를 임포트하면서 C로 별칭하였습니다.

 

import Calculator as C

 

print(C.a)

C.add(100, 200)

C.sub(300, 100)

C.mul(100, 100)

C.div(400, 200)

 

모듈의 특정 멤버만들 임포트해서 가져올 수 있습니다. 다음 스크립트는 Calculator 모듈의 a변수와 mul함수를 임포트해서 사용한 예제입니다.

 

from Calculator import a, mul

 

print(a)

mul(100, 100)

 

모듈의 있는 모든 멤버를 임포트하기 위해서 * 를 사용하면 됩니다.

from Calculator import *

 

모듈을 임포트하는 방법들입니다.

import module_name

import module_1, module_2, module_3

import module_1 as p

import module_1 as p, module_2 as q, module_3

from module import membr

from module import membr_1, membr_2, membr_3

from module import membr_1 as p

 

모듈 멤버 별칭 (Module Member Aliasing)

다음 스크립트는 Calculator모듈 변수 ab로 별칭하였고, add함수를 sum함수로 별칭하였습니다.

 

from Calculator import a as b, add as sum

 

print(b)

sum(100, 100)

 

모듈을 여러 번 임포트해도 한번만 임포트됩니다.

반응형
반응형

일반적으로 대부분의 프로그램은 사용자가 입력을 하면 어떤 처리를 한 후 모니터에 출력을 내보냅니다.

 

사용자 입력

사용자가 키보드로 입력한 값을 어떤 변수에 할당하고 싶을 때 input() 함수를 사용합니다. input()함수는 입력되는 모든 것은 문자열로 인식합니다.

 

다음 스크립트는 input()함수를 사용하여 사용자의 키보드 입력을 기다린 후 키보드에 숫자를 입력하면 출력하는 예제입니다. 사용자가 숫자를 입력하면 in_ex 변수에 저장됩니다.

 

in_ex = input("숫자를 입력하세요?")

print(in_ex, " 입력하였습니다.")

 

Output:

숫자를 입력하세요?4

4 를 입력하였습니다.

 

출력문

화면에 숫자, 문자, 리스트 등을 출력할 때는 print()함수를 사용합니다.

 

다음 스크립트는 몇 가지 예를 보여줍니다.

 

ex = 100

print(ex)

 

ex = "python"

print(ex)

 

ex = [1, 2, 3]

print(ex)

 

ex = (1, 2, 3)

print(ex)

 

Output:

100

python

[1, 2, 3]

(1, 2, 3)

 

큰 따옴표(“)로 둘러싸인 문자열 출력

print("Python""is""good")

 

Output:

Pythonisgood

 

+ 연산으로 문자열 출력

print("Python"+"is"+"good")

 

Output:

Pythonisgood

 

콤마로 문자열 띄어쓰기

print("Python","is","good")

 

Output:

Python is good

 

한 줄에 결과값 출력하기

for i in range(10):

  print(i, end=' ')

 

Output:

0 1 2 3 4 5 6 7 8 9

 

파일 생성하기

파일을 생성하기

파일을 생성하기 위해서 open()함수를 사용합니다. open함수의 사용법은 다음과 같습니다.

파일 객체 = open(파일 이름, 파일 열기 모드)

 

파일 객체는 생성되면 파일 작업을 모두 한 후 닫아 줘야 합니다. 파일 객체를 닫을 때는 close()함수를 사용합니다.

파일 객체.close()

 

다음 스크립트는 새파일.txt”를 생성하고 닫는 예제입니다.

f = open(“새파일.txt”, ‘w’)

f.close()

 

파일 열기 모드 종류는 다음 표와 같습니다.

파일 열기 모드 설명
r 읽기모드 파일을 읽기만 할 때 사용
w 쓰기모드 파일에 내용을 쓸 때 사용
a 추가모드 파일의 마지막에 새로운 내용을 추가할 때 사용

 

파일을 쓰기 모드로 열면 해당 파일이 이미 존재하면 기존에 있던 파일은 사라지고 새로운 파일이 생성됩니다.

 

다음 스크립트는 특정 디렉토리에 파일을 생성하고 닫는 예제입니다.

f = open(“C:\python_test\new_file.txt”, ‘w’)

f.close()

 

파일에 데이터 쓰기 (write()함수)

파일을 쓰기모드로 생성하고 파일에 데이터를 써 넣기 위해서 write()함수를 사용합니다.

 

다음 스크립트는 new_file.txt를 생성하고 이 파일에 문자열을 입력한 예제입니다.

 

f = open("C:\python_test\new_file.txt", 'w')

for i in range(1, 11):

  data = "{}번째 라인입니다.".format(i)

  f.write(data)

f.close()

 

new_file.txt파일을 에디터에서 열어보면 다음과 같이 기록되어 있습니다.

1번째 라인입니다.

2번째 라인입니다.

3번째 라인입니다.

4번째 라인입니다.

5번째 라인입니다.

6번째 라인입니다.

7번째 라인입니다.

8번째 라인입니다.

9번째 라인입니다.

10번째 라인입니다.

 

파일에서 데이터 읽기 1 (readline()함수)

파일을 리드모드로 읽고 파일 안에 있는 데이터를 읽기 위해서 readline()함수를 사용합니다.

 

이전 스크립트로 작성한 파일 쓰기 예제 파일을 읽어와서 화면에 출력해 보겠습니다. readline()함수를 한번 사용하였으므로 한 라인만 출력합니다.

 

f = open("C:\python_test\new_file.txt", 'r')

line = f.readline()

print(line)

f.close()

 

Output:

1번째 라인입니다.

 

다음 스크립트는 파일에 있는 모든 라인을 출력하는 예제입니다.

 

f = open("C:\python_test\new_file.txt", 'r')

while True:

  line = f.readline()

  if not line: break

  print(line)

f.close()

 

파일에서 데이터 읽기 2 (readlines()함수)

readlines()함수를 사용하여 모든 줄을 읽어서 리스트로 돌려줍니다.

 

다음 스크립트를 실행하면 lines에 다음과 같은 정보가 담겨있습니다.

lines = [“1번째 라인입니다.”, “2번째 라인입니다.”, “3번째 라인입니다.”, … , “10번째 라인입니다.”]

 

f = open("C:\python_test\new_file.txt", 'r')

lines = f.readlines()

for line in lines:

  print(line)  

f.close()

 

파일에서 데이터 읽기 3 (read()함수)

read()함수를 사용하면 파일의 모든 내용을 문자열로 돌려줍니다.

 

다음 스크립트는 data 변수에 new_file.txt파일 안의 모든 문자열이 담기고 출력해 줍니다.

 

f = open("C:\python_test\new_file.txt", 'r')

data = f.read()

print(data)

f.close()

 

파일에 새로운 내용 추가하기

기존에 생성된 파일 마지막 라인에 새로운 데이터를 추가하기 위해서 파일 모드를 ‘a’로 열면 됩니다.

 

다음 스크립트는 기존에 만들었던 new_file.txt파일의 마지막 라인부터 새로운 내용을 추가하는 예제입니다.

 

f = open("C:\python_test\new_file.txt", 'a')

for i in range(11, 20):

  data = "{}번째 라인입니다.".format(i)

  f.write(data)

f.close()

 

with문과 함께 사용하기

파일을 열고 닫을 때 close()함수를 사용해 주었다. 파일을 열고 닫는 것을 자동으로 처리할 수 있는 키워드가 with입니다.

 

다음 스크립트는 with문을 사용하여 파일을 쓰는 예제입니다. with문 블록을 벗어나면 자동으로 파일이 close됩니다.

 

with open("C:\python_test\new_file.txt", 'a') as f:

  f.write("auto close")

 

반응형

+ Recent posts