File locking

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Dr. Who

    #1

    File locking

    I'm always disappointed when I find something that Python doesn't
    handle in a platform independent way. It seems to me that file
    locking is in that boat.

    1. I don't see a way to atomically open a file for writing if and only
    if it doesn't exist without resorting to os.open and specialized
    platform O_XXX flags.

    2. I don't see a way to atomically open a file for writing and obtain
    a lock on the file.

    3. I don't see a platform independent way to obtain a lock on a file.
    You have to do something goofy like
    if sys.platform == win32:
    import msvcrt
    else:
    import fcntl
    and then similar things to call the correct functions with the correct
    flags.

    Please let me know if I'm missing something since they seem like
    normal file operations that I would hope Python would abstract away.
    If not, are there any PEPs concerning this for Python3K?

    Thanks,
    Jeff

  • Marc 'BlackJack' Rintsch

    #2
    Re: File locking

    In <1173722982.696 539.24360@64g20 00cwx.googlegro ups.com>, Dr. Who wrote:
    Please let me know if I'm missing something since they seem like
    normal file operations that I would hope Python would abstract away.
    I don't think of them as "normal" operations. They are "extra" stuff that
    is not only dependent on the operating system but also on the file system
    in use.

    Ciao,
    Marc 'BlackJack' Rintsch

    Comment

    • John Nagle

      #3
      Re: File locking

      Marc 'BlackJack' Rintsch wrote:
      In <1173722982.696 539.24360@64g20 00cwx.googlegro ups.com>, Dr. Who wrote:
      >
      >
      >>Please let me know if I'm missing something since they seem like
      >>normal file operations that I would hope Python would abstract away.
      >
      >
      I don't think of them as "normal" operations. They are "extra" stuff that
      is not only dependent on the operating system but also on the file system
      in use.
      It's a UNIX legacy problem. UNIX historically was very weak
      at interprocess communication and locking, and while today, most
      UNIX-like systems have some kind of add-on for those functions,
      they were never really standardized.

      But see





      for an attempt to deal with this probl;em in a portable way.
      The code is somewhat dated, but it's on the right track.

      John Nagle

      Comment

      Working...