반응형

목차

  1. 텍스트 파일 처리 함수
  2. with 키워드
  3. CSV(Comma-Separated Values)
  4. random 라이브러리
  5. 생성된 데이터 출력하기

텍스트 파일 처리 함수

Python은 텍스트 파일을 처리하는 내장 함수를 제공하므로 파일 읽기, 쓰기 및 추가와 같은 다양한 작업을 수행할 수 있습니다. 가장 일반적으로 사용되는 기능 중 일부는 다음과 같습니다.

1. open()
이 함수는 특정 모드(예: 읽기, 쓰기, 추가)에서 파일을 여는 데 사용됩니다. 다양한 파일 작업을 수행하는 데 사용할 수 있는 파일 개체를 반환합니다. open() 함수의 구문은 다음과 같습니다.

file_object = open("file_name", "mode")


가장 일반적인 모드는 다음과 같습니다.

  • "r": 기존 파일의 내용을 읽기 위한 읽기 모드.
  • "w": 쓰기 모드, 새 파일을 만들거나 기존 파일의 내용을 덮어씁니다.
  • "a": 기존 파일에 데이터를 추가하기 위한 추가 모드.


2. read()
이 메서드는 파일의 내용을 단일 문자열로 읽습니다. open() 함수를 사용하여 얻은 파일 객체에서 호출할 수 있습니다.

file_object = open("file_name.txt", "r")
content = file_object.read()
file_object.close()


3. readline()
이 메서드는 파일에서 한 줄을 읽습니다. open() 함수를 사용하여 얻은 파일 객체에서 호출할 수 있습니다.

file_object = open("file_name.txt", "r")
first_line = file_object.readline()
file_object.close()


4. readlines()
이 메서드는 파일의 모든 줄을 읽고 문자열 목록으로 반환합니다. open() 함수를 사용하여 얻은 파일 객체에서 호출할 수 있습니다.

file_object = open("file_name.txt", "r")
lines = file_object.readlines()
file_object.close()


5. write(): 이 메서드는 파일에 문자열을 씁니다. open() 함수를 사용하여 얻은 파일 객체에서 호출할 수 있습니다.

file_object = open("file_name.txt", "w")
file_object.write("Hello, World!")
file_object.close()


6. writelines()
이 메서드는 문자열 목록을 파일에 씁니다. open() 함수를 사용하여 얻은 파일 객체에서 호출할 수 있습니다.

file_object = open("file_name.txt", "w")
lines = ["Line 1\n", "Line 2\n", "Line 3\n"]
file_object.writelines(lines)
file_object.close()


  * close()
이 메서드는 파일 개체를 닫고 파일과 관련된 모든 시스템 리소스를 해제합니다. 파일 작업을 마치면 호출해야 합니다.
코드 블록이 실행된 후 자동으로 파일 닫기를 처리하므로 파일 작업 시 with 문을 사용하는 것이 좋습니다. 

with open("file_name.txt", "r") as file_object:
    content = file_object.read()


이 예에서 with 문은 블록 내에서 예외가 발생하더라도 코드 블록이 실행된 후 파일이 제대로 닫히도록 합니다.


with 키워드

'with' 키워드는 코드 블록에 대한 특정 컨텍스트를 설정하고 해제하는 메서드를 정의하는 개체인 컨텍스트 관리자와 함께 사용됩니다. 'with' 문은 필요한 설정 및 정리 작업이 실행되도록 하여 파일 I/O, 소켓 또는 데이터베이스 연결과 같은 리소스 처리를 단순화합니다.

with 문이 실행되면 필요한 리소스를 설정하는 컨텍스트 관리자의 __enter__() 메서드를 호출합니다. 그러면 with 블록 내부의 코드가 이러한 리소스를 사용할 수 있습니다. 코드 블록이 완료되면 컨텍스트 관리자의 __exit__() 메서드가 호출되어 필요한 정리 작업을 수행합니다.

with 키워드의 일반적인 사용 사례는 코드 블록이 실행된 후 자동으로 파일 닫기를 처리하기 때문에 파일 작업입니다.

with open("file_name.txt", "r") as file_object:
    content = file_object.read()


이 예제에서 open() 함수는 컨텍스트 관리자인 파일 객체를 반환합니다. with 문은 블록 내에서 예외가 발생하더라도 코드 블록이 실행된 후 파일이 올바르게 닫히도록 합니다.


또 다른 예는 데이터베이스 연결과 함께 with 문을 사용하는 것입니다.

import sqlite3

with sqlite3.connect("example.db") as connection:
    cursor = connection.cursor()
    cursor.execute("CREATE TABLE example (id INTEGER, name TEXT)")
    connection.commit()


이 예에서 sqlite3.connect() 함수는 데이터베이스 연결을 처리하는 컨텍스트 관리자를 반환합니다. with 문은 코드 블록이 실행된 후 연결이 제대로 닫히도록 합니다.


with 키워드를 사용하면 리소스 관리를 간소화하고 코드 가독성을 개선하며 부적절한 리소스 정리로 인한 버그 가능성을 줄일 수 있습니다.


CSV(Comma-Separated Values)

Python CSV(쉼표로 구분된 값)는 Python 프로그래밍 언어를 사용하여 CSV 파일로 작업하는 프로세스를 나타냅니다. CSV 파일은 테이블 형식 데이터를 저장하고 교환하기 위해 널리 사용되는 데이터 형식입니다. CSV 파일의 각 줄은 레코드 또는 데이터 행을 나타내며 값은 쉼표 또는 다른 구분 기호(예: 탭, 세미콜론)로 구분됩니다. CSV 파일은 Microsoft Excel 또는 Google 스프레드시트와 같은 스프레드시트 소프트웨어로 쉽게 가져올 수 있습니다.

Python은 CSV 파일을 쉽게 읽고 쓸 수 있도록 하는 csv라는 내장 라이브러리를 제공합니다. csv 라이브러리에는 CSV 데이터를 구조화되고 효율적인 방식으로 처리하기 위한 다양한 클래스와 함수가 함께 제공됩니다. 가장 일반적으로 사용되는 csv 라이브러리 구성 요소는 다음과 같습니다.

  • csv.reader
    이 클래스는 파일 또는 파일과 유사한 객체에서 CSV 데이터를 읽고 파일의 각 행에 대한 값 목록을 생성하는 반복 가능한 객체를 반환합니다. 행을 반복하고 필요에 따라 데이터를 처리할 수 있습니다.

  • csv.writer
    이 클래스는 CSV 데이터를 파일 또는 파일류 객체에 기록합니다. 각각 단일 행 또는 여러 행의 데이터를 쓰는 writerow() 및 writerows()와 같은 메서드를 제공합니다.

  • csv.DictReader
    이 클래스는 CSV 데이터를 사전으로 읽습니다. 여기서 키는 열 헤더에 해당하고 값은 각 행의 데이터입니다. 인덱스 대신 이름으로 열에 액세스하려는 경우에 유용합니다.

  • csv.DictWriter
    이 클래스는 CSV 데이터를 사전으로 작성하여 각 행에 대한 열 헤더 및 해당 데이터를 지정할 수 있습니다.


다음은 csv 라이브러리를 사용하여 CSV 파일을 읽고 쓰는 예입니다.

import csv

# Reading a CSV file
with open("input.csv", "r") as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        print(row)

# Writing a CSV file
data = [
    ["Name", "Age", "City"],
    ["Alice", 30, "New York"],
    ["Bob", 25, "San Francisco"],
]

with open("output.csv", "w") as csvfile:
    writer = csv.writer(csvfile)
    writer.writerows(data)


이 예에서는 먼저 "input.csv"라는 CSV 파일을 읽고 각 행을 인쇄합니다. 그런 다음 "output.csv"라는 새 CSV 파일을 만들고 일부 데이터를 씁니다.

Python csv 라이브러리를 사용하면 CSV 파일로 쉽게 작업할 수 있으므로 체계적이고 효율적인 방식으로 테이블 형식 데이터를 읽고 쓰고 조작할 수 있습니다.


random 라이브러리

Python에서 CSV 데이터를 무작위로 생성하려면 내장 csv 라이브러리와 random 라이브러리를 조합하여 사용할 수 있습니다. 다음은 임의의 CSV 데이터를 생성하고 파일에 쓰는 방법의 예입니다.

import csv
import random

# Column headers
headers = ["Name", "Age", "City"]

# Sample data for random selection
names = ["Alice", "Bob", "Charlie", "David", "Eve", "Frank", "Grace", "Hannah", "Ivan", "Jack"]
cities = ["New York", "San Francisco", "Los Angeles", "Chicago", "Houston", "Miami", "Boston", "Seattle", "Atlanta", "Denver"]

# Number of rows to generate
num_rows = 20

# Generate random data
data = []
for _ in range(num_rows):
    name = random.choice(names)
    age = random.randint(18, 60)
    city = random.choice(cities)
    data.append([name, age, city])

# Write the random data to a CSV file
with open("random_data.csv", "w", newline="") as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(headers)  # Write the headers
    writer.writerows(data)  # Write the random data


이 예에서는 먼저 열 머리글과 이름 및 도시에 대한 일부 샘플 데이터를 정의합니다. 그런 다음 임의의 이름과 도시를 선택하고 임의의 연령을 생성하여 특정 수의 임의 데이터 행(num_rows)을 생성합니다. 마지막으로 임의로 생성된 데이터를 "random_data.csv"라는 CSV 파일에 기록합니다.


필요에 따라 headers, 샘플 데이터 및 num_rows를 조정하여 요구 사항에 따라 다른 임의 CSV 데이터를 생성할 수 있습니다.


생성된 데이터 출력하기

생성된 데이터를 라인별로 출력하려면 for 루프를 사용하여 data 목록의 행을 반복하고 각 행을 인쇄하면 됩니다. 다음은 데이터를 한 줄씩 인쇄하는 추가 루프가 있는 이전의 예입니다.

 

import csv
import random

# Column headers
headers = ["Name", "Age", "City"]

# Sample data for random selection
names = ["Alice", "Bob", "Charlie", "David", "Eve", "Frank", "Grace", "Hannah", "Ivan", "Jack"]
cities = ["New York", "San Francisco", "Los Angeles", "Chicago", "Houston", "Miami", "Boston", "Seattle", "Atlanta", "Denver"]

# Number of rows to generate
num_rows = 20

# Generate random data
data = []
for _ in range(num_rows):
    name = random.choice(names)
    age = random.randint(18, 60)
    city = random.choice(cities)
    data.append([name, age, city])

# Write the random data to a CSV file
with open("random_data.csv", "w", newline="") as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(headers)  # Write the headers
    writer.writerows(data)  # Write the random data

# Print the generated data line by line
print("Generated Data:")
print(', '.join(headers))  # Print the headers
for row in data:
    print(', '.join(str(value) for value in row))  # Print the row values as a comma-separated string


이 예에서는 임의의 데이터를 CSV 파일에 쓴 후 for 루프를 사용하여 data 목록의 행을 반복합니다. 루프 내에서 join 함수를 사용하여 각 행의 값을 쉼표로 연결하고 각 값을 먼저 문자열로 변환한 다음 결과 문자열을 인쇄합니다. 이렇게 하면 헤더를 포함하여 생성된 데이터가 한 줄씩 출력됩니다.

반응형