我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用stat.S_IREAD。
def rmtree_errorhandler(func, path, exc_info): """On Windows, the files in .svn are read-only, so when rmtree() tries to remove them, an exception is thrown. We catch that here, remove the read-only attribute, and hopefully continue without problems.""" exctype, value = exc_info[:2] if not ((exctype is WindowsError and value.args[0] == 5) or #others (exctype is OSError and value.args[0] == 13) or #python2.4 (exctype is PermissionError and value.args[3] == 5) #python3.3 ): raise # file type should currently be read only if ((os.stat(path).st_mode & stat.S_IREAD) != stat.S_IREAD): raise # convert to read/write os.chmod(path, stat.S_IWRITE) # use the original function to repeat the operation func(path)
def _CopyRuntimeImpl(target, source, verbose=True): """Copy |source| to |target| if it doesn't already exist or if it needs to be updated (comparing last modified time as an approximate float match as for some reason the values tend to differ by ~1e-07 despite being copies of the same file... https://crbug.com/603603). """ if (os.path.isdir(os.path.dirname(target)) and (not os.path.isfile(target) or abs(os.stat(target).st_mtime - os.stat(source).st_mtime) >= 0.01)): if verbose: print 'Copying %s to %s...' % (source, target) if os.path.exists(target): # Make the file writable so that we can delete it now, and keep it # readable. os.chmod(target, stat.S_IWRITE | stat.S_IREAD) os.unlink(target) shutil.copy2(source, target) # Make the file writable so that we can overwrite or delete it later, # keep it readable. os.chmod(target, stat.S_IWRITE | stat.S_IREAD)
def save_token_file(token): token_file = raw_input("> Enter token file location [~/.sympy/release-token] ") token_file = token_file or "~/.sympy/release-token" token_file_expand = os.path.expanduser(token_file) token_file_expand = os.path.abspath(token_file_expand) token_folder, _ = os.path.split(token_file_expand) try: if not os.path.isdir(token_folder): os.mkdir(token_folder, 0o700) with open(token_file_expand, 'w') as f: f.write(token + '\n') os.chmod(token_file_expand, stat.S_IREAD | stat.S_IWRITE) except OSError as e: print("> Unable to create folder for token file: ", e) return except IOError as e: print("> Unable to save token file: ", e) return return token_file
def test_on_error(self): self.errorState = 0 os.mkdir(TESTFN) self.childpath = os.path.join(TESTFN, 'a') f = open(self.childpath, 'w') f.close() old_dir_mode = os.stat(TESTFN).st_mode old_child_mode = os.stat(self.childpath).st_mode # Make unwritable. os.chmod(self.childpath, stat.S_IREAD) os.chmod(TESTFN, stat.S_IREAD) shutil.rmtree(TESTFN, onerror=self.check_args_to_onerror) # Test whether onerror has actually been called. self.assertEqual(self.errorState, 2, "Expected call to onerror function did not happen.") # Make writable again. os.chmod(TESTFN, old_dir_mode) os.chmod(self.childpath, old_child_mode) # Clean up. shutil.rmtree(TESTFN)
def _write(self): if threading.currentThread().isDaemon(): log.warning('daemon thread cannot write wallet') return if not self.modified: return s = json.dumps(self.data, indent=4, sort_keys=True) temp_path = "%s.tmp.%s" % (self.path, os.getpid()) with open(temp_path, "w") as f: f.write(s) f.flush() os.fsync(f.fileno()) if os.path.exists(self.path): mode = os.stat(self.path).st_mode else: mode = stat.S_IREAD | stat.S_IWRITE # perform atomic write on POSIX systems try: os.rename(temp_path, self.path) except: os.remove(self.path) os.rename(temp_path, self.path) os.chmod(self.path, mode) self.modified = False
def ensure_private_ssh_key(): global PRIVATE_SSH_KEY if PRIVATE_SSH_KEY: key_path = os.path.expanduser('~/.ssh') key_file = os.path.join(key_path, 'id_rsa') try: if not os.path.isdir(key_path): os.mkdir(key_path) if not os.path.isfile(key_file): shutil.copyfile(PRIVATE_SSH_KEY, key_file) os.chmod(key_file, stat.S_IWRITE | stat.S_IREAD) except (IOError, OSError) as error: PRIVATE_SSH_KEY = '' print(error) else: return True return False # TODO: unify with frontend config
def rotree(path, ro=True, chmod_files=True): """To make tree read-only or writable Parameters ---------- path : string Path to the tree/directory to chmod ro : bool, optional Either to make it R/O (default) or RW chmod_files : bool, optional Either to operate also on files (not just directories) """ if ro: chmod = lambda f: os.chmod(f, os.stat(f).st_mode & ~stat.S_IWRITE) else: chmod = lambda f: os.chmod(f, os.stat(f).st_mode | stat.S_IWRITE | stat.S_IREAD) for root, dirs, files in os.walk(path, followlinks=False): if chmod_files: for f in files: fullf = opj(root, f) # might be the "broken" symlink which would fail to stat etc if exists(fullf): chmod(fullf) chmod(root)
def testMakedirs(self): tmpdir = tempfile.mkdtemp() # make the parent directory read-write os.chmod(tmpdir, stat.S_IRWXU) fpath = os.path.join(tmpdir, "f") fopath = os.path.join(fpath, "o") foopath = os.path.join(fopath, "o") # make the leaf, and ONLY the leaf read-only act = action.fromstr("dir path={0}".format(foopath)) act.makedirs(foopath, mode = stat.S_IREAD) # Now make sure the directories leading up the leaf # are read-write, and the leaf is readonly. assert(os.stat(tmpdir).st_mode & (stat.S_IREAD | stat.S_IWRITE) != 0) assert(os.stat(fpath).st_mode & (stat.S_IREAD | stat.S_IWRITE) != 0) assert(os.stat(fopath).st_mode & (stat.S_IREAD | stat.S_IWRITE) != 0) assert(os.stat(foopath).st_mode & stat.S_IREAD != 0) assert(os.stat(foopath).st_mode & stat.S_IWRITE == 0) # change it back to read/write so we can delete it os.chmod(foopath, stat.S_IRWXU) shutil.rmtree(tmpdir)
def __init__(self, task_id, monitor_interval, resource_monitor_interval, max_walltime=None, max_mem=None, max_procs=None): threading.Thread.__init__(self) self.task_id = task_id self.pid = os.getpid() self.monitor_interval = monitor_interval self.resource_monitor_interval = max(resource_monitor_interval // monitor_interval, 1) self.daemon = True self.max_walltime = max_walltime if self.max_walltime is not None: self.max_walltime = expand_time(self.max_walltime) self.max_mem = max_mem self.max_procs = max_procs self.pulse_file = os.path.join(os.path.expanduser('~'), '.sos', 'tasks', task_id + '.pulse') # remove previous status file, which could be readonly if the job is killed if os.path.isfile(self.pulse_file): if not os.access(self.pulse_file, os.W_OK): os.chmod(self.pulse_file, stat.S_IREAD | stat.S_IWRITE) os.remove(self.pulse_file) with open(self.pulse_file, 'w') as pd: pd.write(f'#task: {task_id}\n') pd.write(f'#started at {datetime.now().strftime("%A, %d. %B %Y %I:%M%p")}\n#\n') pd.write('#time\tproc_cpu\tproc_mem\tchildren\tchildren_cpu\tchildren_mem\n')
def kill_task(task): status = check_task(task) if status == 'pending': return 'cancelled' # remove job file as well job_file = os.path.join(os.path.expanduser('~'), '.sos', 'tasks', task + '.sh') if os.path.isfile(job_file): try: os.remove(job_file) except Exception: pass if status != 'running': return status # job is running pulse_file = os.path.join(os.path.expanduser('~'), '.sos', 'tasks', task + '.pulse') from stat import S_IREAD, S_IRGRP, S_IROTH os.chmod(pulse_file, S_IREAD|S_IRGRP|S_IROTH) return 'killed'
def rmtree_errorhandler(func, path, exc_info): """On Windows, the files in .svn are read-only, so when rmtree() tries to remove them, an exception is thrown. We catch that here, remove the read-only attribute, and hopefully continue without problems.""" # if file type currently read only if os.stat(path).st_mode & stat.S_IREAD: # convert to read/write os.chmod(path, stat.S_IWRITE) # use the original function to repeat the operation func(path) return else: raise
def execute(self, name, options, parameters): try: self._cmdLock.acquire() self._log.debug("execute(%s, %s, %s)", name, options, parameters) if not name.startswith("/"): raise CF.InvalidFileName(CF.CF_EINVAL, "Filename must be absolute") if self.isLocked(): raise CF.Device.InvalidState("System is locked down") if self.isDisabled(): raise CF.Device.InvalidState("System is disabled") priority = 0 stack_size = 4096 invalidOptions = [] for option in options: val = option.value.value() if option.id == CF.ExecutableDevice.PRIORITY_ID: if ((not isinstance(val, int)) and (not isinstance(val, long))): invalidOptions.append(option) else: priority = val elif option.id == CF.ExecutableDevice.STACK_SIZE_ID: if ((not isinstance(val, int)) and (not isinstance(val, long))): invalidOptions.append(option) else: stack_size = val if len(invalidOptions) > 0: self._log.error("execute() received invalid options %s", invalidOptions) raise CF.ExecutableDevice.InvalidOptions(invalidOptions) command = name[1:] # This is relative to our CWD self._log.debug("Running %s %s", command, os.getcwd()) if not os.path.isfile(command): raise CF.InvalidFileName(CF.CF_EINVAL, "File could not be found %s" % command) os.chmod(command, os.stat(command)[0] | stat.S_IEXEC | stat.S_IREAD | stat.S_IWRITE) finally: self._cmdLock.release() return self._execute(command, options, parameters)
def getReadable(self): """ returns whether the current instance's file is readable or not. if the file doesn't exist False is returned """ try: s = os.stat(self) return s.st_mode & stat.S_IREAD except: # i think this only happens if the file doesn't exist return False
def setWritable(self, state=True): """ sets the writeable flag (ie: !readonly) """ try: setTo = stat.S_IREAD if state: setTo = stat.S_IWRITE os.chmod(self, setTo) except: pass
def file_set_readonly(path, enable, follow_symlinks=True, recursive=False): """Apply or remove the read-only property of a given file or directory.""" st_mode = os.stat(path, follow_symlinks=follow_symlinks).st_mode new_attr = ( (st_mode | stat.S_IREAD) & ~stat.S_IWRITE if enable else (st_mode | stat.S_IWRITE) & ~stat.S_IREAD) if new_attr != st_mode: os.chmod(path, new_attr) if recursive and stat.S_ISDIR(st_mode): for entry in os.scandir(path): file_set_readonly(entry.path, enable, follow_symlinks, recursive)