그만큼 ~와 함께 Python의 키워드는 컨텍스트 관리자로 사용됩니다. 모든 프로그래밍 언어에서와 마찬가지로 파일 작업이나 데이터베이스 연결과 같은 리소스를 사용하는 것은 매우 일반적입니다. 그러나 이러한 자원은 공급이 제한되어 있습니다. 따라서 가장 큰 문제는 이러한 리소스를 사용 후 반드시 해제하는 것입니다. 해제되지 않으면 리소스 누출이 발생하고 시스템 속도가 느려지거나 충돌이 발생할 수 있습니다.
우리가 알고 있듯이 open() 함수는 일반적으로 Python에서 파일을 처리하는 데 사용됩니다. 그러나 사용이 완료되면 자동으로 파일을 해제하므로 키워드와 같은 컨텍스트 관리자를 사용하여 파일을 처리하는 것이 표준 관행입니다.
문자열 정수
open() 구문을 사용하는 Python:
통사론:
open(file_path, 모드, 인코딩)을 파일로 사용:
…
파일 경로: 열려는 파일의 경로입니다
방법: 파일의 작동 모드입니다. 예: 읽기, 쓰기 등(r, w, r+, w+, rb, wb 등으로 표시)
부호화: 올바른 인코딩 형식으로 파일을 읽으십시오.
예시 1: with 문을 사용한 간단한 예
이미 파일 이름이 있습니다. geeksforgeeks.txt 우리 시스템에는 다음과 같은 데이터가 있습니다.

긱스포긱스,txt
이제 파일을 열고 with open() 문을 사용하여 파일의 내용을 읽습니다.
파이썬3
with> open> (> 'geeksforgeeks.txt'> ,> 'r'> ) as gfg_file:> > file_content> => gfg_file.read()> > print> (file_content)> |
>
>
자바의 for 루프
산출:
GeeksForGeeks is best for DSA>
메모: 여기서는 모드를 다음과 같이 사용했습니다. 아르 자형 대상 파일에 텍스트 데이터가 있으므로 데이터를 읽으십시오. 바이너리 파일을 읽는 경우에는 다음을 사용해야 합니다. rb 모드로.
예시 2: 우리는 또한 ~와 함께 파일에 데이터를 추가하거나 쓰는 명령문입니다.
문자열을 추가하겠습니다. 안녕하세요 괴짜들! geeksforgeeks.txt 파일에 추가하세요.
파이썬3
# appending string to file> with> open> (> 'geeksforgeeks.txt'> ,> 'a'> ) as gfg_file:> > gfg_file.write(> '
Hello Geeks!'> )> > # reading the file contents> # to verify if successfully appended the data> with> open> (> 'geeksforgeeks.txt'> ,> 'r'> ) as gfg_file:> > content> => gfg_file.read()> > print> (content)> |
>
>
산출:
GeeksForGeeks is best for DSA Hello Geeks!>
메모: 여기서 우리는 ㅏ 파일을 여는 모드로 파일 데이터에 추가하려고 하기 때문입니다. 대신, 파일 데이터를 덮어쓰려면 다음을 사용합니다. ~ 안에 방법.
예제 3: 중첩된 open 문을 사용하여 여러 파일 열기

링크.txt
우리는 링크.txt 임의의 링크가 포함된 파일입니다. 우리는 geeksforgeeks.txt 위에서 언급한 파일을 추가하고 링크 파일의 내용을 geeksforgeeks.txt 파일.
파이썬3
# appending string to file> with> open> (> 'geeksforgeeks.txt'> ,> 'a'> ) as gfg_file:> > gfg_file.write(> '
Hello Geeks!'> )> > with> open> (> 'links.txt'> ,> 'r'> ) as links_file:> > lines> => links_file.readlines()> > gfg_file.writelines(lines)> |
>
쉐타 티와리
>
geeksforgeeks.txt 수정 후 파일 내용:

긱스포긱스,txt
여기에서 우리는 그 내용을 볼 수 있습니다. 링크.txt 파일이 에 추가되었습니다. geeksforgeeks.txt 스크립트 실행 후 파일.
open() 사용과 open() 사용의 차이점
사용하는 기능이 있지만 열려 있는() 그리고 ~와 함께 열려 있는() 완전히 동일하지만 몇 가지 중요한 차이점이 있습니다.
- open()을 사용하면 파일이 명시적으로 닫히지 않는 한 파일 핸들러를 사용할 수 있습니다. 파일_핸들러.닫기() 하지만 open() 컨텍스트 관리자와 함께 사용하는 경우 with 블록 외부에서 파일 핸들러를 사용할 수 없습니다. 높일 것이다 ValueError: 닫힌 파일에 대한 I/O 작업 그 경우에는.
- open()을 사용하는 동안 열린 파일 인스턴스를 명시적으로 닫아야 합니다. 그렇지 않으면 동일한 파일을 여는 동안 코드의 다른 부분에서 오류가 발생할 수 있습니다. open()을 사용하면 파일 닫기가 컨텍스트 관리자에 의해 처리됩니다.
- with open() context 문을 사용하면 들여쓰기 차이로 코드 블록을 쉽게 구분할 수 있으므로 코드가 더욱 깔끔해집니다. open()의 경우 파일 인스턴스를 닫는 것을 놓칠 수 있으며 이로 인해 메모리 누수 및 기타 I/O 작업 오류가 발생할 수 있습니다.