>

파이썬 3에서 새로운 열린 파일 모드 "x"는 무엇을합니까?

여기 python 3 문서 :

와이즈 비즈

'독점 창작'이란 무엇입니까?

"x"모드를 테스트하고 다음을 찾습니다 :

  • 'r/w/a'와 함께 사용할 수 없습니다
  • "x"는 쓰기 만 가능합니다. "x +"는 읽고 쓸 수 있습니다
  • 파일이

    '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 (deprecated)

    전에 존재하지 않아야합니다.
  • 파일은 open 후에 생성됩니다
따라서 "x"는 "w"와 유사합니다. 그러나 "x"의 경우파일이 존재하면 FileExistsError를 발생시킵니다. "w"의 경우 단순히 새 파일을 생성하고 기존 파일을 자릅니다.

맞습니까? 이것이 유일한 차이점입니까?

open

  • 답변 # 1

    @Martjin이 이미 말했듯이, 당신은 이미 자신의 질문에 대답했습니다. 텍스트를 더 잘 이해하기 위해 매뉴얼의 설명 만 증폭시킬 것입니다

    'x': 배타적 생성을 위해 열며 파일이 이미 존재하지 않으면 실패합니다

    exclusive creation 를 지정할 때 이는 파일을 독점적으로 생성하기 위해이 모드를 사용한다는 것을 의미합니다. 우연히 w 모드 중 하나를 사용하여 기존 파일을 자르거나 추가하지 않을 때 필요합니다.  또는 a .

    이것이 없으면 개발자는 파일을 업데이트하기 위해 뛰어 넘기 전에 파일이 있는지 확인해야합니다.

    이 모드를 사용하면 코드가 간단하게

    try:
        with open("fname", "x") as fout:
            #Work with your open file
    except FileExistsError:
        # Your error handling goes here
    
    

    이전에는 코드가 다음과 같이 작성되었지만

    import os.path
    if os.path.isfile(fname):
        # Your error handling goes here
    else:
        with open("fname", "w") as fout:
            # Work with your open file
    
    

  • 답변 # 2

    예, 기본적으로입니다.

    x 를 사용하여 두 개의 프로그램 인스턴스가 동시에 실행되는 것을 발견하면 편리합니다  모드는하나만이 파일을 성공적으로 생성하고 다른 하나는 실패합니다.

    전형적인 예는 프로세스 ID를 pid 에 쓰는 데몬입니다.  파일 (쉽게 신호를 보낼 수 있음). x 를 사용하여 , 한 번에하나데몬 만 실행할 수 있음을 보장 할 수 있습니다. x 없이는 더 어려울 수 있습니다.  모드를 선택하고 경쟁 조건에 취약합니다.

  • 답변 # 3

    간단히 말하면, 'x' 로 파일을여십시오.  모드는 다음을 의미합니다 :

    원자 적으로수행 : (존재 여부 확인 및 파일 생성파일)

  • 이전 sql - EXECUTE IMMEDIATE를 한 번만 사용하여 2 개의 테이블을 만드는 방법은 무엇입니까?
  • 다음 c# - ControlBindingsCollectionAdd의 데이터 소스가 INotifyPropertyChanged가 아닌 개체 인 이유는 무엇입니까?