파이썬에서는 일반적으로 close()
파일 개체에 대한 작업이 flush()
작업을 의미합니까?close()는 Python에서 flush()를 의미합니까?
답변
예. 그것은 당신을위한 기본 close()
함수를 사용합니다 (source).
NB : close()
및 flush()
은 데이터가 실제로 디스크에서 안전함을 보장하지 않습니다. 그것은 단지 OS가 프로세스 내에서 버퍼링되지 않는다는 것을 보장합니다.
동기화 또는 fsync를 사용하여 디스크에 기록 된 데이터를 가져올 수 있습니다.
프로세스 종료시 True이지만 최신 OS가 디스크에 데이터를 쓰지 않습니까? –
당신이 말하는 시간 척도에 따라 다릅니다. 예 : 일부 버전의 ext4는 데이터를 디스크에 커밋하기 전에 1 초를 기다릴 수 있습니다. –
+1 크기의 순서가 초이면 매우 안전합니다. 감사! –
filehandle.close가 반드시 플러시되지는 않습니다. 놀랍게도 filehandle.flush는 도움이되지 않습니다. 파이썬이 돌아갈 때 OS 버퍼에 여전히 걸릴 수 있습니다. 내가 파일에 쓴이 세션을 관찰, 그것은 쉘 명령 프롬프트하려면 Ctrl-Z를 폐쇄하고 파일 검사 :
$ cat xyz
ghi
$ fg
python
>>> x=open("xyz","a")
>>> x.write("morestuff\n")
>>> x.write("morestuff\n")
>>> x.write("morestuff\n")
>>> x.flush
<built-in method flush of file object at 0x7f58e0044660>
>>> x.close
<built-in method close of file object at 0x7f58e0044660>
>>>
[1]+ Stopped python
$ cat xyz
ghi
은 그 후 내가 파일을 다시 할 수 있습니다, 그것은 반드시 (파일 동기화에 있기 때문에 이 경우에는 추가 모드에서 열어 봅니다.) 다른 사람들이 말한 것처럼 sync syscall (os 패키지에서 사용 가능)은 모든 버퍼를 디스크로 플러시해야하지만 시스템 전반에 걸친 성능 영향을 미칠 수 있습니다 (시스템의 모든 파일을 동기화 함).
흠 - 사실 당신이 실제로 ** ** flush() 또는 close()를 호출하지 않았다는 것이 당신의 문제라고 생각합니다. 그 방법들을 부르려면 괄호가 필요합니다. –
- 1. Python에서 "result.status_code == 200"은 무엇을 의미합니까?
- 2. Hibernate는 find-not-null이 아닌 에러로 flush를 호출한다.
- 3. HttpRuntime Close는 광고 된대로 캐시에서 항목을 제거하지 않습니다.
- 4. Python에서 리플렉션
- 5. "?" 루비를 의미합니까?
- 6. 무엇을 의미합니까?
- 7. Python에서 물리학을위한 간단한 시뮬레이션?
- 8. Python에서 노드의 시각적 표현
- 9. Python에서 PHP 코드를 호출하십시오.
- 10. Python에서 Windows 레지스트리 편집
- 11. Python에서 정적 메서드 pickling
- 12. Python에서 RSA 구현
- 13. Python에서 유형 오류!
- 14. Python에서 WM_COPYDATA 받기
- 15. Python에서 SQLite 변수 전달하기
- 16. Python에서 C++ DLL 호출
- 17. Python에서 dicT의 간단한 문제
- 18. Python에서 다운로드하는 방법
- 19. Python에서 사용자 ID 생성
- 20. Python에서 시스템 자동 재시작
- 21. Python에서 Oracle 날짜 확인
- 22. Python에서 지역 수정하기
- 23. Python에서 os.execvp 사용
- 24. Python에서 Javascript로 날짜 변환
- 25. Python에서 클래스 가져 오기
- 26. Python에서 동적으로 상속을 설정합니다.
- 27. Python에서 MySQL 데이터베이스에 연결
- 28. Python에서 LazilyEvaluatedConstantProperty 클래스 만들기
- 29. Python에서 모듈의 조건부 임포트
- 30. Python에서 csv.writer의 형식 지정
(다른 말로하면, 버퍼링 된 파일 입출력이 너무 큽니다.'open','write','close'는 여러분이 이미 의도 한대로 쓰지 않아야합니다. 'write'. 던져진 것을 일상적으로 먹는 완충 대는 나쁜 디자인 [또는 배고픈 완충 대]이 될 것입니다. – Joey
고마워요, 그건 제 추측이었습니다. 그러나이 진정한 크로스 플랫폼, 크로스 OS 및 교차 언어는 무엇입니까? –
@Adam Matan : 그렇기 때문에 파이썬이 C 라이브러리 위에 놓이는 이유가 여기에 있습니다. "이 진정한 크로스 플랫폼, 크로스 OS"를 보장합니다. 나는 "교차 언어"가 무엇을 의미하는지 모른다. –