이제는 다음을 사용합니다.
pageHeadSectionFile = open('pagehead.section.htm','r')
output = pageHeadSectionFile.read()
pageHeadSectionFile.close()
그러나 코드를 더 좋아 보이게하려면 다음을 수행하십시오.
output = open('pagehead.section.htm','r').read()
위의 구문을 사용할 때 시스템 리소스를 확보하기 위해 파일을 닫으려면 어떻게해야합니까?
답변
실제로 닫을 필요는 없습니다. 파이썬은 가비지 수집 중이나 프로그램 종료시 자동으로 처리합니다. 그러나 @delnan이 지적했듯이 여러 가지 이유로 명시 적으로 닫는 것이 좋습니다.
따라서 짧고 간단하며 명시 적으로 유지하기 위해 할 수있는 일 :
with open('pagehead.section.htm','r') as f:
output = f.read()
이제는 두 줄에 불과하고 읽기 쉽습니다.
답변
Python Standard Library Pathlib 모듈은 원하는 것을 수행합니다.
Path('pagehead.section.htm').read_text()
Path를 가져 오는 것을 잊지 마십시오 :
jsk@dev1:~$ python3
Python 3.5.2 (default, Sep 10 2016, 08:21:44)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from pathlib import Path
>>> (Path("/etc") / "hostname").read_text()
'dev1.example\n'
Python 27에서 백 포트 설치 pathlib
또는pathlib2
답변
CPython을 사용하면 파일 오브젝트가 즉시 가비지 수집되므로 행이 실행 된 직후 파일이 닫힙니다. 그러나 두 가지 단점이 있습니다.
-
CPython과 다른 Python 구현에서 파일은 종종 즉시 닫히지 않고 나중에 제어 할 수없는 범위에서 닫힙니다.
-
Python 3.2 이상에서
ResourceWarning
활성화하면을 발생시킵니다.
하나의 추가 라인을 투자하는 것이 좋습니다.
with open('pagehead.section.htm','r') as f:
output = f.read()
이렇게하면 모든 상황에서 파일이 올바르게 닫힙니다.
답변
이를 위해 특별한 라이브러리를 가져올 필요가 없습니다.
일반 구문을 사용하면 파일을 읽고 닫을 수 있습니다.
with open("/etc/hostname","r") as f: print f.read()
또는
with open("/etc/hosts","r") as f: x = f.read().splitlines()
이것은 행을 포함하는 배열 x를 제공하며 다음과 같이 인쇄 할 수 있습니다.
for line in x: print line
이 단일 라이너는 유지 관리에 매우 유용합니다. 기본적으로 자체 문서화입니다.
답변
당신이 할 수있는 일은 with
문장 을 사용하고 한 줄에 두 단계를 쓰는 것입니다.
>>> with open('pagehead.section.htm', 'r') as fin: output = fin.read();
>>> print(output)
some content
이 with
문장은 __exit__
코드에 문제가 발생하더라도 주어진 객체의 함수 를 호출하도록주의를 기울입니다 . try... finally
구문에 가깝습니다 . 에 의해 반환 된 개체를 들어 open
, __exit__
파일 폐쇄에 해당합니다.
이 문장은 Python 2.6에서 도입되었습니다.
답변
ilio 사용 : (inline io) :
open (), read (), close () 대신 하나의 함수 호출.
from ilio import read
content = read('filename')
답변
with open('pagehead.section.htm')as f:contents=f.read()