Python의 쓰기 라인

Subodh Adhikari 2023년10월10일
  1. write()writelines() 메서드를 사용하여 Python에서 파일에 지정된 텍스트 쓰기
  2. write()writelines() 메서드를 사용하여 Python에서 파일에 반복 가능 쓰기
Python의 쓰기 라인

이 튜토리얼은 파이썬에서 write()writelines() 메소드의 차이점을 소개하고 설명합니다.

write()writelines() 메서드를 사용하여 Python에서 파일에 지정된 텍스트 쓰기

write() 메서드는 문자열을 인수로 예상하고 파일에 씁니다. 문자열 목록을 제공하면 예외가 발생합니다. writelines() 메소드는 반복 가능한 인수를 예상합니다. 또한 write() 메서드는 출력을 표시하지만 줄 바꿈 문자를 제공하지 않는 반면 writelines() 메서드는 출력을 표시하고 문자열 끝에 줄 바꿈 문자를 제공합니다. writelines()는 iterable의 각 항목 뒤에 새 줄을 자동으로 삽입하지 않는다는 점에 유의하는 것이 중요합니다. 우리 스스로 새로운 라인을 제공해야 합니다. 파일에 쓸 행이 많다면 writelines()가 더 나은 옵션이 될 수 있습니다. 임시 연결된 문자열을 생성하지 않고 행을 반복하기 때문에 잘 수행됩니다.

아래 프로그램에서 쓰기 모드에서 samplefile.txt 파일을 열었습니다. lines 변수는 튜플, 즉 변경할 수 없는 문자열 모음입니다. 프로그램을 실행하려고 하면 예외 유형 오류가 발생했습니다. write() 메소드에 제공한 인수는 오류를 일으킨 튜플입니다. 여기서는 파일 처리를 위해 with 메서드를 사용했습니다. 이 방법은 더 나은 구문과 예외 처리를 제공합니다. 따라서 해당되는 경우 with 메서드를 사용하는 것이 좋습니다. 이 방법은 열린 파일이 완료된 후 닫히기 때문에 유용합니다.

예제 코드:

# python 3.x
nl = "\n"
line1 = "Good"
line2 = "Morning"
line3 = "Sunshine"
lines = line1, nl, line2, nl, line3, nl
with open("samplefile.txt", "w") as f:
    f.write(lines)

출력:

TypeError: write() argument must be str, not tuple

비슷한 맥락에서 writelines()를 사용하면 프로그램이 성공적으로 실행되고 lineswritelines() 메서드에 인수로 전달되는 samplefile.txt라는 파일이 생성됩니다.

예제 코드:

# python 3.x
nl = "\n"
line1 = "Good"
line2 = "Morning"
line3 = "Sunshine"
lines = line1, nl, line2, nl, line3, nl
with open("samplefile.txt", "w") as f:
    f.writelines(lines)

출력:

Good
Morning
Sunshine

동일한 프로그램의 경우 여러 줄이 lines_joined라는 단일 문자열 변수에 연결되며 이는 write() 메서드에 대한 인수로 쉽게 허용됩니다.

예제 코드:

# python 3.x
nl = "\n"
line1 = "Good"
line2 = "Morning"
line3 = "Sunshine"
lines_joined = line1 + nl + line2 + nl + line3 + nl
with open("samplefile.txt", "w") as f:
    f.write(lines_joined)

출력:

Good
Morning
Sunshine

write()writelines() 메서드를 사용하여 Python에서 파일에 반복 가능 쓰기

join() 메소드는 iterable의 모든 항목을 가져와 하나의 문자열로 결합합니다. 아래 프로그램에서 lines의 문자열을 연결하는 접착제로 '\n'join() 메서드를 사용했습니다. + 연산자를 사용하는 대신 연결에 더 나은 접근 방식입니다.

예제 코드:

# python 3.x
lines = ["Hello", "World"]
with open("hello.txt", "w") as f:
    f.write("\n".join(lines))

출력:

Hello
World

매우 긴 문자열 목록에 join() 메서드를 사용하는 것은 덜 효율적입니다. 이러한 경우 쓰기 전에 완전히 새롭고 매우 긴 문자열이 메모리에 생성됩니다. 따라서 아래 프로그램에서 생성기 표현식을 사용하여 줄 바꿈에 문자열을 작성했습니다. 여기에서 데이터는 조각 단위로 기록됩니다.

예제 코드:

# python 3.x
lines = ["Hello", "World"]
with open("hello.txt", "w") as f:
    for l in lines:
        f.write("%s\n" % l)

출력:

Hello
World

위와 동일한 프로그램이 writelines() 메소드를 통해 구현됩니다. 생성기 표현식을 사용하고 줄 바꿈으로 끝나는 문자열을 동적으로 생성합니다. writelines() 메서드는 이 문자열 시퀀스를 반복하고 모든 항목을 씁니다.

예제 코드:

# python 3.x
lines = ["Hello", "World"]
with open("hello.txt", "w") as file:
    file.writelines("%s\n" % t for t in texts)

출력:

Hello
World

관련 문장 - Python File