From 28951bc648bcaa949cb9058268507e6868d1f3f1 Mon Sep 17 00:00:00 2001 From: "Zooko O'Whielacronx zooko@zooko.com" <zooko@zooko.com> Date: Sun, 15 Apr 2007 04:30:33 +0530 Subject: [PATCH] pyfec: argparse: add a feature of exclusivecreate to the argparse FileType darcs-hash:8e8be96f844f6b283b87c6c522bc2cd73cbf3a34 --- pyfec/fec/util/argparse.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/pyfec/fec/util/argparse.py b/pyfec/fec/util/argparse.py index cb67cdb..8b273b7 100644 --- a/pyfec/fec/util/argparse.py +++ b/pyfec/fec/util/argparse.py @@ -5,7 +5,6 @@ # Redistribution and use in source and binary forms, with or without # modification, are permitted under the terms of the 3-clause BSD # license. No warranty expressed or implied. -# For details, see the accompanying file LICENSE.txt. """Command-line parsing library @@ -839,11 +838,16 @@ class FileType(object): same values as the builtin open() function. bufsize -- The file's desired buffer size. Accepts the same values as the builtin open() function. + exclusiveopen -- A bool indicating whether the attempt to create the file + should fail if there is already a file present by that name. This is + ignored if 'w' is not in mode. """ - def __init__(self, mode='r', bufsize=None): + def __init__(self, mode='r', bufsize=None, exclusivecreate=False): self._mode = mode + self._bufsize = bufsize if self._bufsize is None: self._bufsize = -1 + self._exclusivecreate = exclusivecreate def __call__(self, string): # the special argument "-" means sys.std{in,out} @@ -857,7 +861,11 @@ class FileType(object): raise ValueError(msg) # all other arguments are used as file names - return open(string, self._mode, self._bufsize) + if self._exclusivecreate and ('w' in self._mode): + fd = _os.open(string, _os.O_CREAT|_os.O_EXCL) + return _os.fdopen(fd, self._mode, self._bufsize) + else: + return open(string, self._mode, self._bufsize) # =========================== -- 2.45.2