logo

Python으로 파일에 쓰기

Python은 파일 생성, 쓰기, 읽기를 위한 내장 함수를 제공합니다. Python에서 처리할 수 있는 파일에는 일반 텍스트 파일과 바이너리 파일(바이너리 언어, 0과 1로 작성됨)의 두 가지 유형이 있습니다.

    텍스트 파일: 이 유형의 파일에서는 텍스트의 각 줄이 EOL(End of Line)이라는 특수 문자로 종료됩니다. EOL은 기본적으로 Python의 새 줄 문자(' ')입니다. 바이너리 파일: 이 유형의 파일에는 줄에 대한 종결자가 없으며 데이터를 기계가 이해할 수 있는 바이너리 언어로 변환하여 저장합니다.

메모: 파일 처리에 대해 자세히 알아보려면 여기를 클릭하세요 .



내용의 테이블

액세스 모드

액세스 모드는 열린 파일에서 가능한 작업 유형을 제어합니다. 파일이 열린 후 어떻게 사용되는지를 나타냅니다. 이러한 모드는 파일에서 파일 핸들의 위치도 정의합니다. 파일 핸들은 파일에서 데이터를 읽거나 써야 하는 위치를 정의하는 커서와 같습니다. 파일 읽기를 위한 다양한 액세스 모드는 다음과 같습니다.

    쓰기 전용('w') : 쓰기 위해 파일을 엽니다. 기존 파일의 경우 데이터가 잘리고 덮어쓰여집니다. 핸들은 파일의 시작 부분에 위치합니다. 파일이 존재하지 않는 경우 파일을 생성합니다. 쓰기 및 읽기('w+') : 읽고 쓰기 위해 파일을 엽니다. 기존 파일의 경우 데이터가 잘리고 덮어쓰여집니다. 핸들은 파일의 시작 부분에 위치합니다. Append Only ('a') : 쓰기 위해 파일을 엽니다. 파일이 존재하지 않으면 생성됩니다. 핸들은 파일의 끝에 위치합니다. 기록되는 데이터는 기존 데이터 뒤에 삽입됩니다.

메모: 액세스 모드에 대해 자세히 알아보려면 여기를 클릭하세요 .



파일 열기

open() 함수를 사용하여 수행됩니다. 이 기능을 위해 모듈을 가져올 필요가 없습니다. 통사론:

File_object = open(r'File_Name', 'Access_Mode')>

파일은 Python 프로그램 파일과 동일한 디렉터리에 있어야 하며, 그렇지 않으면 파일 이름 대신 파일의 전체 주소를 적어야 합니다. 메모: r은 파일 이름 문자열의 문자가 특수 문자로 처리되는 것을 방지하기 위해 파일 이름 앞에 배치됩니다. 예를 들어, 파일 주소에 emp가 있으면 는 탭 문자로 처리되어 잘못된 주소라는 오류가 발생합니다. r은 문자열을 원시로 만듭니다. 즉, 문자열에 특수 문자가 없음을 나타냅니다. 파일이 동일한 디렉토리에 있고 주소가 배치되지 않은 경우 r은 무시될 수 있습니다.

파이썬3






# Open function to open the file 'MyFile1.txt'> # (same directory) in read mode and> file1>=> open>('MyFile.txt', 'w')> > # store its reference in the variable file1> # and 'MyFile2.txt' in D:Text in file2> file2>=> open>(r'D:TextMyFile2.txt', 'w>+>')>

>

리눅스의 파일 시스템

>

여기서는 file1이 MyFile1의 개체로 생성되고 file2가 MyFile2의 개체로 생성됩니다.

파일 닫기

close() 함수는 파일을 닫고 해당 파일이 확보한 메모리 공간을 해제합니다. 파일이 더 이상 필요하지 않거나 다른 파일 모드로 열릴 때 사용됩니다. 통사론:

File_object.close()>

파이썬3




# Opening and Closing a file 'MyFile.txt'> # for object name file1.> file1>=> open>('MyFile.txt', 'w')> file1.close()>

>

>

파일에 쓰기

파일에 쓰는 방법에는 두 가지가 있습니다.

    write() : 문자열 str1을 텍스트 파일의 한 줄에 삽입합니다.
File_object.write(str1)>
    writelines() : 문자열 요소 목록의 경우 각 문자열이 텍스트 파일에 삽입됩니다. 한 번에 여러 문자열을 삽입하는 데 사용됩니다.
File_object.writelines(L) for L = [str1, str2, str3]>

메모: ' '은 2바이트의 특수문자로 처리됩니다. 예:

파이썬3

소수 자바




# Python program to demonstrate> # writing to file> # Opening a file> file1>=> open>(>'myfile.txt'>,>'w'>)> L>=> ['This>is> Delhi ', 'This>is> Paris ', 'This>is> London ']> s>=> 'Hello '> # Writing a string to file> file1.write(s)> # Writing multiple strings> # at a time> file1.writelines(L)> # Closing file> file1.close()> # Checking if the data is> # written to file or not> file1>=> open>(>'myfile.txt'>,>'r'>)> print>(file1.read())> file1.close()>

>

>

산출:

Hello This is Delhi This is Paris This is London>

파일에 추가

파일이 추가 모드로 열리면 핸들은 파일 끝에 위치합니다. 기록되는 데이터는 기존 데이터 뒤에 삽입됩니다. 쓰기 모드와 추가 모드의 차이점을 명확히 하기 위해 아래 예를 살펴보겠습니다.

파이썬3




# Python program to illustrate> # Append vs write mode> file1>=> open>('myfile.txt', 'w')> L>=> ['This>is> Delhi ', 'This>is> Paris ', 'This>is> London ']> file1.writelines(L)> file1.close()> # Append-adds at last> file1>=> open>('myfile.txt', 'a')># append mode> file1.write('Today ')> file1.close()> file1>=> open>('myfile.txt', 'r')> print>('Output of Readlines after appending')> print>(file1.read())> print>()> file1.close()> # Write-Overwrites> file1>=> open>('myfile.txt', 'w')># write mode> file1.write('Tomorrow ')> file1.close()> file1>=> open>('myfile.txt', 'r')> print>('Output of Readlines after writing')> print>(file1.read())> print>()> file1.close()>

>

>

산출:

Output of Readlines after appending This is Delhi This is Paris This is London Today Output of Readlines after writing Tomorrow>

진술 포함

Python의 with 문은 예외 처리에 사용되어 코드를 더욱 깔끔하고 읽기 쉽게 만듭니다. 파일 스트림과 같은 공통 리소스의 관리를 단순화합니다. 위의 구현과 달리 with 문을 사용할 때는 file.close()를 호출할 필요가 없습니다. with 문 자체는 리소스의 적절한 획득 및 해제를 보장합니다. 통사론:

with open filename as file:>

파이썬3




# Program to show various ways to> # write data to a file using with statement> L>=> ['This>is> Delhi ', 'This>is> Paris ', 'This>is> London ']> # Writing to file> with>open>('myfile.txt', 'w') as file1:> ># Writing data to a file> >file1.write('Hello ')> >file1.writelines(L)> # Reading from file> with>open>('myfile.txt', 'r>+>') as file1:> ># Reading form a file> >print>(file1.read())>

>

>

산출:

Hello This is Delhi This is Paris This is London>

참고: with 문에 대한 자세한 내용을 보려면 여기를 클릭하세요.

for 문을 사용하여:

단계:

for 문을 사용하여 Python에서 파일에 쓰려면 다음 단계를 따르세요.

적절한 모드(쓰기의 경우 'w')로 open() 함수를 사용하여 파일을 엽니다.
for 문을 사용하여 파일에 쓰려는 데이터를 반복합니다.
파일 객체의 write() 메서드를 사용하여 파일에 데이터를 씁니다.
파일 객체의 close() 메서드를 사용하여 파일을 닫습니다.

이 예에서는 with open('file.txt', 'w') as f 문을 사용하여 쓰기 위해 파일을 엽니다. 기록할 데이터는 데이터라는 목록에 저장됩니다. for 문은 목록의 각 데이터 줄을 반복하는 데 사용됩니다. f.write(line + ' ') 문은 끝에 개행 문자( )를 사용하여 각 데이터 줄을 파일에 씁니다. 마지막으로 with 블록이 끝나면 파일이 자동으로 닫힙니다.

파이썬3




# Open the file for writing> with>open>(>'file.txt'>,>'w'>) as f:> ># Define the data to be written> >data>=> [>'This is the first line'>,>'This is the second line'>,>'This is the third line'>]> ># Use a for loop to write each line of data to the file> >for> line>in> data:> >f.write(line>+> ' '>)> ># Optionally, print the data as it is written to the file> >print>(line)> # The file is automatically closed when the 'with' block ends>

>

10억은 몇 백만인가요?

>

산출

This is the first line This is the second line This is the third line>

접근하다:
이 코드는 블록이 끝날 때 파일이 제대로 닫히도록 하기 위해 with 블록을 사용하여 쓰기 모드에서 file.txt라는 파일을 엽니다. 파일에 기록될 행을 나타내는 data라는 문자열 목록을 정의합니다. 그런 다음 코드는 for 루프를 사용하여 데이터의 각 문자열을 반복하고 write() 메서드를 사용하여 각 문자열을 파일에 씁니다. 코드는 각 문자열에 개행 문자를 추가하여 각 문자열이 파일의 새 줄에 기록되도록 합니다. 코드는 선택적으로 각 문자열이 파일에 기록될 때 인쇄합니다.

시간 복잡도:
원본 코드와 대체 코드 모두 O(n)의 시간 복잡도를 갖습니다. 여기서 n은 파일에 기록될 라인 수입니다. 이는 두 코드 모두 데이터 목록의 각 줄을 반복하여 파일에 기록해야 하기 때문입니다.

공간 복잡도:
원본 코드와 대체 코드의 공간 복잡도는 O(n)으로 동일합니다. 여기서 n은 파일에 쓸 줄 수입니다. 이는 두 코드 모두 파일에 쓸 줄을 나타내는 문자열 목록을 만들어야 하기 때문입니다.