파이썬 file
과 open
파이썬 의 차이점은 무엇입니까 ? 언제 어느 것을 사용해야합니까? (내가 2.5에 있다고 말해봐)
답변
항상을 사용해야 open()
합니다.
현상태대로 문서의 상태 :
파일을 열 때이 생성자를 직접 호출하는 대신 open ()을 사용하는 것이 좋습니다. 파일은 형식 테스트에 더 적합합니다 (예 : “isinstance (f, file)”작성).
또한 Python 3.0부터 file()
제거되었습니다 .
답변
두 가지 이유 : “한 가지 방법이 있어야한다”는 파이썬 철학은 file
사라지고있다.
file
실제 유형입니다 (예 : file('myfile.txt')
생성자 호출). open
파일 객체를 반환하는 팩토리 함수입니다.
파이썬 3.0에서는 file
내장 된 io
라이브러리 에서 라이브러리의 여러 클래스로 구현되는 것으로 이동할 것 입니다 (버퍼 리더 등이있는 Java와 비슷 함).
답변
file()
int 또는 목록과 같은 유형입니다. open()
파일을 여는 함수이며 file
객체 를 반환 합니다.
다음은 open을 사용해야하는 경우의 예입니다.
f = open(filename, 'r')
for line in f:
process(line)
f.close()
다음은 파일을 사용해야 할 때의 예입니다.
class LoggingFile(file):
def write(self, data):
sys.stderr.write("Wrote %d bytes\n" % len(data))
super(LoggingFile, self).write(data)
보시다시피, 둘 다 존재해야 할 충분한 이유가 있고 둘 다에 대한 명확한 사용 사례가 있습니다.
답변
기능적으로는 두 가지가 동일합니다. 어쨌든 open
전화 할 file
것이므로 현재 차이점은 스타일의 문제입니다. 파이썬 문서를 사용하는 것이 좋습니다 open
.
파일을 열 때 파일 생성자를 직접 호출하는 대신 open ()을 사용하는 것이 좋습니다.
그 이유는 이후 버전에서 그것들이 동일하다고 보장하지 않기 때문입니다 ( open
출고 경로에 따라 다른 유형의 객체를 반환하는 팩토리 함수가 될 것입니다).
답변
파일을 열 때만 open ()을 사용하십시오. file ()은 실제로 3.0에서 제거되고 있으며 현재 더 이상 사용되지 않습니다. 그들은 일종의 이상한 관계를 가지고 있지만, file ()은 지금 가고 있으므로 더 이상 걱정할 필요가 없습니다.
다음은 Python 2.6 문서에서 가져온 것입니다. [브래킷 재료]가 추가했습니다.
파일을 열 때이 [file ()] 생성자를 직접 호출하는 대신 open ()을 사용하는 것이 좋습니다. 파일은 형식 테스트에 더 적합합니다 (예 : isinstance (f, file) 작성).
답변
Van Rossum에 따르면 open ()은 현재 file ()의 별칭이지만 나중에 변경 될 수 있으므로 open ()을 사용해야합니다.