How do I create a file in python without overwriting an existing file

前端 未结 3 1080
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-05 07:41

Currently I have a loop that tries to find an unused filename by adding suffixes to a filename string. Once it fails to find a file, it uses the name that failed to open a

3条回答
  •  萌比男神i
    2020-12-05 08:06

    Use os.open() with os.O_CREAT and os.O_EXCL to create the file. That will fail if the file already exists:

    >>> fd = os.open("x", os.O_WRONLY | os.O_CREAT | os.O_EXCL)
    Traceback (most recent call last):
      File "", line 1, in 
    OSError: [Errno 17] File exists: 'x'
    

    Once you've created a new file, use os.fdopen() to turn the handle into a standard Python file object:

    >>> fd = os.open("y", os.O_WRONLY | os.O_CREAT | os.O_EXCL)
    >>> f = os.fdopen(fd, "w")  # f is now a standard Python file object
    

    Edit: From Python 3.3, the builtin open() has an x mode that means "open for exclusive creation, failing if the file already exists".

提交回复
热议问题