Python에서 파일의 줄 바꾸기

Vaibhhav Khetarpal 2023년1월30일
  1. replace() 함수와 함께 for 루프를 사용하여 Python에서 파일의 줄 바꾸기
  2. 새로 고친 내용으로 새 파일 만들기 및 Python에서 원본 파일 바꾸기
  3. Python에서 줄의 텍스트를 바꾸기 위해 fileinput.input() 함수 사용
  4. re 모듈을 사용하여 Python에서 줄의 텍스트 바꾸기
Python에서 파일의 줄 바꾸기

파일 처리는 모든 웹 응용 프로그램의 필수 측면으로 간주됩니다. 대부분의 프로그래밍 언어와 마찬가지로 Python은 파일 처리를 완벽하게 지원할 수 있습니다. 기본적으로 읽기 및 쓰기와 같은 몇 가지 기본 작업을 수행하기 위해 다양한 유형의 파일을 처리할 수 있습니다. 또한 파일을 작동하기 위한 몇 가지 다른 파일 처리 옵션을 제공합니다.

이 자습서는 Python에서 파일의 줄을 바꾸는 데 사용할 수 있는 다양한 방법을 보여줍니다.

이 기사에서 파일의 줄을 바꾸는 다양한 방법을 보여주기 위해 motivation.txt라는 텍스트 파일을 사용할 것입니다.

텍스트 파일(motivation.txt):

There are always second chances in life. Anybody can bounce back from hardships. The hardships that we face are just a test to check our will. A strong will is all it takes to bounce back from a loss.

이 파일의 저장 디렉토리 경로는 리더의 컴퓨터에서 다를 수 있습니다. 따라서 그에 따라 조정하는 것이 좋습니다.

replace() 함수와 함께 for 루프를 사용하여 Python에서 파일의 줄 바꾸기

open() 함수는 Python에서 파일을 여는 데 사용됩니다. 파일은 프로그래머에 따라 텍스트 또는 바이너리 형식으로 열 수 있습니다. open() 함수에는 다양한 모드가 있으며 모두 파일을 열 수 있는 다양한 접근성 옵션을 제공합니다.

간단한 for 루프는 주어진 텍스트 파일의 모든 줄을 탐색하고 교체하려는 줄을 찾는 일반적인 방법입니다. 그런 다음 replace() 함수를 사용하여 원하는 줄을 바꿀 수 있습니다. 이 모든 작업은 읽기 모드에서 수행됩니다. 마지막으로 파일이 쓰기 모드로 열리고 대체된 내용이 지정된 파일에 기록됩니다.

다음 코드는 replace() 함수와 함께 for 루프를 사용합니다.

# opening the file in read mode
file = open("motivation.txt", "r")
replacement = ""
# using the for loop
for line in file:
    line = line.strip()
    changes = line.replace("hardships", "situations")
    replacement = replacement + changes + "\n"

file.close()
# opening the file in write mode
fout = open("motivation.txt", "w")
fout.write(replacement)
fout.close()

새로 고친 내용으로 새 파일 만들기 및 Python에서 원본 파일 바꾸기

이 프로세스를 구현하기 위해 여러 기능이 작동 중입니다. 이 방법을 성공적으로 실행하려면 이러한 모든 기능의 프로세스에 대한 지식이 필요합니다. 3개의 모듈에서 Python 코드로 여러 함수를 가져와야 합니다.

  • 먼저 tempfile 모듈에서 mkstemp() 함수를 가져와야 합니다. 이 함수는 경로 및 파일 설명자와 함께 튜플을 출력으로 반환하는 데 사용됩니다.
  • 그런 다음 shutil 모듈에서 두 개의 함수를 가져와야 합니다. 첫 번째 함수는 소스에서 대상 경로로 권한 비트를 복사하는 데 사용되는 copymode() 함수입니다. 두 번째 기능은 move() 기능으로 파일을 한 곳에서 다른 곳으로 이동할 수 있습니다.
  • 마지막으로 OS 모듈에서 remove() 함수를 가져와야 합니다. 이 기능을 사용하면 경로를 삭제할 수 있습니다.

오류 없이 코드를 실행하려면 이러한 모든 모듈을 현재 Python 코드로 가져와야 합니다. 이와 같이 구현한 예제 코드는 다음과 같다.

from tempfile import mkstemp
from shutil import move, copymode
from os import fdopen, remove

# storing the path where the file is saved on your device as a variable
path = "C:\\Users\Admin\Desktop\python\test\motivation.txt"


def replacement(filepath, hardships, situations):

    # Creating a temp file
    fd, abspath = mkstemp()
    with fdopen(fd, "w") as file1:
        with open(filepath, "r") as file0:
            for line in file0:
                file1.write(line.replace(hardships, situations))
    copymode(filepath, abspath)
    remove(filepath)
    move(abspath, filepath)


replacement(path, "hardships", "situations")

Python에서 줄의 텍스트를 바꾸기 위해 fileinput.input() 함수 사용

fileinput.input() 메서드는 파일을 한 줄씩 입력으로 가져오고 주로 주어진 파일에 데이터를 추가하고 업데이트하는 데 사용됩니다.

오류 없이 코드를 실행하려면 fileinputsys 모듈을 현재 Python 코드로 가져와야 합니다. 다음 코드는 파이썬에서 한 줄의 텍스트를 바꾸기 위해 fileinput.input() 함수를 사용합니다.

import fileinput
import sys


def replacement(file, previousw, nextw):
    for line in fileinput.input(file, inplace=1):
        line = line.replace(previousw, nextw)
        sys.stdout.write(line)


var1 = "hardships"
var2 = "situations"
file = "motivation.txt"
replacement(file, var1, var2)

re 모듈을 사용하여 Python에서 줄의 텍스트 바꾸기

re 모듈은 Python이 정규식을 다루는 프로그래머에게 제공하는 내장 모듈이며 코드로 가져와야 합니다. 주어진 특정 문자열에서 패턴을 검색하는 작업을 수행하는 데 도움이 됩니다.

이 방법에서는 RegEx 모듈의 re.compile()re.escape()라는 두 가지 함수를 사용합니다. re.compile() 함수는 정규식 패턴에서 정규식 개체를 생성하는 데 사용되며, 일치하는 데 사용됩니다. re.compile() 함수는 Python에서 특수 문자를 무시하거나 이스케이프하는 데 사용됩니다.

다음 코드는 Regex 모듈의 여러 기능을 사용하여 Python의 한 줄에 있는 텍스트를 대체합니다.

import re


def replacement(Path, text, subs, flags=0):
    with open(filepath, "r+") as f1:
        contents = f1.read()
        pattern = re.compile(re.escape(text), flags)
        contents = pattern.sub(subs, contents)
        f1.seek(0)
        f1.truncate()
        f1.write(file_contents)


filepath = "motivation.txt"
text = "hardships"
subs = "situations"
replacement(filepath, text, subs)

여기에서 주어진 패턴을 문자열이나 지정된 함수의 결과로 바꾸기 위해 sub() 함수도 사용했습니다.

Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn

관련 문장 - Python File