Python의 쓰기 라인
-
write()
및writelines()
메서드를 사용하여 Python에서 파일에 지정된 텍스트 쓰기 -
write()
및writelines()
메서드를 사용하여 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()
를 사용하면 프로그램이 성공적으로 실행되고 lines
가 writelines()
메서드에 인수로 전달되는 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