내장 오픈 기능에서의 모드 a, a+, w, w+, r+의 차이는 무엇입니까?
python 빌트인 오픈 함수에서 모드 간의 정확한 차이는 무엇입니까?w,a,w+,a+ , , , , 입니다.r+
특히 이 문서에서는 이 모든 것이 파일에 쓸 수 있음을 시사하고 있으며 특히 "추가", "쓰기" 및 "업데이트"를 위해 파일을 열지만 이러한 용어의 의미는 정의되지 않습니다.
오프닝 모드는 C 표준 라이브러리 기능의 모드와 완전히 동일합니다.
BSD manpage 에서는, 다음과 같이 정의됩니다.
The argument mode points to a string beginning with one of the following
sequences (Additional characters may follow these sequences.):
``r'' Open text file for reading. The stream is positioned at the
beginning of the file.
``r+'' Open for reading and writing. The stream is positioned at the
beginning of the file.
``w'' Truncate file to zero length or create text file for writing.
The stream is positioned at the beginning of the file.
``w+'' Open for reading and writing. The file is created if it does not
exist, otherwise it is truncated. The stream is positioned at
the beginning of the file.
``a'' Open for writing. The file is created if it does not exist. The
stream is positioned at the end of the file. Subsequent writes
to the file will always end up at the then current end of file,
irrespective of any intervening fseek(3) or similar.
``a+'' Open for reading and writing. The file is created if it does not
exist. The stream is positioned at the end of the file. Subse-
quent writes to the file will always end up at the then current
end of file, irrespective of any intervening fseek(3) or similar.
저는 가끔 구글을 다시 열어야 한다는 것을 깨달았습니다. 단지 두 모드 간의 주요 차이점이 무엇인지에 대한 정신적 이미지를 구축하기 위해서입니다.그래서 다음번에는 도표를 읽는 게 더 빠를 것 같았어요.아마 다른 사람도 도움이 될 거야

표 형식으로만 동일한 정보
| r r+ w w+ a a+
------------------|--------------------------
read | + + + +
write | + + + + +
write after seek | + + +
create | + + + +
truncate | + +
position at start | + + + +
position at end | + +
여기서 의미는 다음과 같습니다(오역하지 않기 위해서만).
read - 파일에서 읽을 수 있습니다.
쓰기 - 파일에 쓸 수 있습니다.
create - 파일이 아직 존재하지 않는 경우 파일이 생성됩니다.
잘라내기 - 파일을 여는 동안 파일이 비어 있습니다(파일의 모든 내용이 지워짐).
시작 시 위치 - 파일을 연 후 초기 위치가 파일 시작 위치로 설정됩니다.
끝 위치 - 파일을 연 후 파일 끝에 초기 위치가 설정됩니다.
★★★★★★a ★★★★★★★★★★★★★★★★★」a+ - " " " " " - " 를 합니다.seek움직임
내 / 에서는 새로운 , win7 / python2.7 에서는 입니다.a+ 디세이블로그:
write('aa'); seek(0, 0); read(1); write('b')두 번째 - 두 번째write
write('aa'); seek(0, 0); read(2); write('b')두 번째 - 두 번째writeIOError
옵션은 C 표준 라이브러리의 fopen 기능과 동일합니다.
w 이미 .
a에 추가된다.
w+쓰기를 열리며 을 잘라낼 뿐만 쓴 을 다시 수도 있습니다.
a+읽기를 위해 , 와 그 을 읽을 수 .
| r | r+ | x | x+ | w | w+ | a | a+ | |
|---|---|---|---|---|---|---|---|---|
| 읽을 수 있다 | x | x | x | x | x | |||
| 쓸 수 있다 | x | x | x | x | x | x | x | |
| 기본 위치: 시작 | x | x | x | x | x | x | ||
| 기본 위치: end | x | x | ||||||
| 존재해야 한다 | x | x | ||||||
| 존재해서는 안 된다 | x | x | ||||||
| 로드 시 잘라내기(클리어 파일) | x | x | ||||||
| 항상 EOF에 쓰기 | x | x |
모드
| t(디폴트) | b | |
|---|---|---|
str (io.TextIOBase ) |
x | |
bytes (io.BufferedIOBase ) |
x |
되지 않은 「」 「」 「」 「」t되고 있습니다가 사용됩니다.와 같이r is is is is is와 rt.
크로스 플랫폼 실행(CYA 등)을 검토하는 것이 중요하다고 생각합니다. : )
Windows 에서는, 모드에 「b」를 부가하면 파일이 바이너리 모드로 열리기 때문에, 「rb」, 「wb」, 「r+b」등의 모드도 있습니다.Windows의 Python은 텍스트 파일과 바이너리 파일을 구분합니다.텍스트 파일의 행 끝 문자는 데이터를 읽거나 쓸 때 자동으로 약간 변경됩니다.ASCII 텍스트 파일에서는 이러한 파일 데이터의 백그라운드 수정이 가능하지만 JPEG 또는 EXE 파일과 같은 바이너리 데이터가 손상됩니다.이러한 파일을 읽고 쓸 때는 바이너리 모드를 사용할 수 있도록 주의하십시오.Unix 에서는, 모드에 「b」를 부가하는 것도 문제 없습니다.따라서, 모든 바이너리 파일에 대해서 플랫폼에 의존하지 않고 사용할 수 있습니다.
이것은 Python Software Foundation 2.7.x에서 직접 인용한 것입니다.
나는 왜 당신이 w+와 w를 사용하는지 알아내려다가 이것을 발견했다.결국, 나는 몇 가지 테스트를 했을 뿐이다.두 경우 모두 처음에는 파일이 잘리기 때문에 모드 'w+'의 용도는 별로 없습니다.그러나 'w+'를 사용하면 글을 쓴 후 뒤돌아보는 방식으로 읽을 수 있습니다.w'로 판독을 시도하면 IOError가 발생합니다.seek를 사용하지 않고 seek 모드를 'w+'로 읽으면 파일 포인터가 사용자가 쓴 위치 뒤에 있기 때문에 아무것도 생성되지 않습니다.
Python 3은 Python 2에 대해 올바른 답변과는 다르게 오프닝 모드를 정의한다는 것을 알아두는 것이 중요합니다.
Python 3의 오프닝 모드는 다음과 같습니다.
'r' open for reading (default)
'w' open for writing, truncating the file first
'x' open for exclusive creation, failing if the file already exists
'a' open for writing, appending to the end of the file if it exists
----
'b' binary mode
't' text mode (default)
'+' open a disk file for updating (reading and writing)
'U' universal newlines mode (for backwards compatibility; should not be used in new code)
' 'r,w,x,a.b ★★★★★★★★★★★★★★★★★」t+ 「이러다」를 추가합니다.U피해야 합니다.
, 명기해 것이 좋습니다.t, 「 」이후로, 「 」를 참조해 주세요.r입니다.rtopen()는 「」의 입니다.rb open()" (: "읽기")*.bz2을 클릭합니다.
따라서 파일을 여는 모드는 다음과 같습니다.
rtwtxtat 모드 및/쓰기/작성/, 텍스트 모드 및 파일 읽기/쓰기/작성/첨부용.
rb/wb/xb/ab바이너리 모드에서 파일을 읽기/쓰기/작성/추가하기 위해 사용합니다.
사용하다+종전과 같이
언급URL : https://stackoverflow.com/questions/1466000/difference-between-modes-a-a-w-w-and-r-in-built-in-open-function
'programing' 카테고리의 다른 글
| Python 클래스의 문자열 표현을 변경하려면 어떻게 해야 합니까? (0) | 2022.12.30 |
|---|---|
| 기본 Java 설치의 cacerts 위치를 얻으려면 어떻게 해야 합니까? (0) | 2022.12.30 |
| phpexcel을 사용하여 데이터를 읽고 데이터베이스에 삽입하려면 어떻게 해야 합니까? (0) | 2022.12.20 |
| 업데이트 후 MariaDB를 시작할 수 없음: [경고] 테스트 파일 /home/mysql/beta.lower-test를 생성할 수 없습니다. (0) | 2022.12.20 |
| Java에서 ArrayList를 정렬하는 방법 (0) | 2022.12.20 |