我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用sys.getfilesystemencoding()。
def __init__(self): now = datetime.datetime.now() self.py2 = py.is_py2() #truth test Python 2 interpreter self.py3 = py.is_py3() #truth test Python 3 interpreter self.py_major = py.py_major_version() #Python major version self.py_minor = py.py_minor_version() #Python minor version self.py_patch = py.py_patch_version() #Python patch version self.os = sys.platform #user operating system self.cwd = cwd() #current (present) working directory self.parent_dir = os.pardir self.default_path = os.defpath self.user_path = os.path.expanduser("~") self.string_encoding = sys.getdefaultencoding() self.file_encoding = sys.getfilesystemencoding() self.hour = now.hour self.min = now.minute self.year = now.year self.day = now.day self.month = now.month self.second = now.second
def fix_script(path): """Replace #!python with #!/path/to/python Return True if file was changed.""" # XXX RECORD hashes will need to be updated if os.path.isfile(path): with open(path, 'rb') as script: firstline = script.readline() if not firstline.startswith(b'#!python'): return False exename = sys.executable.encode(sys.getfilesystemencoding()) firstline = b'#!' + exename + os.linesep.encode("ascii") rest = script.read() with open(path, 'wb') as script: script.write(firstline) script.write(rest) return True
def setup_py(self): assert self.source_dir, "No source dir for %s" % self try: import setuptools # noqa except ImportError: if get_installed_version('setuptools') is None: add_msg = "Please install setuptools." else: add_msg = traceback.format_exc() # Setuptools is not available raise InstallationError( "Could not import setuptools which is required to " "install from a source distribution.\n%s" % add_msg ) setup_py = os.path.join(self.setup_py_dir, 'setup.py') # Python2 __file__ should not be unicode if six.PY2 and isinstance(setup_py, six.text_type): setup_py = setup_py.encode(sys.getfilesystemencoding()) return setup_py
def run_setup(setup_script, args): """Run a distutils setup script, sandboxed in its directory""" setup_dir = os.path.abspath(os.path.dirname(setup_script)) with setup_context(setup_dir): try: sys.argv[:] = [setup_script] + list(args) sys.path.insert(0, setup_dir) # reset to include setup dir, w/clean callback list working_set.__init__() working_set.callbacks.append(lambda dist: dist.activate()) # __file__ should be a byte string on Python 2 (#712) dunder_file = ( setup_script if isinstance(setup_script, str) else setup_script.encode(sys.getfilesystemencoding()) ) with DirectorySandbox(setup_dir): ns = dict(__file__=dunder_file, __name__='__main__') _execfile(setup_script, ns) except SystemExit as v: if v.args and v.args[0]: raise # Normal exit, just return
def filesys_decode(path): """ Ensure that the given path is decoded, NONE when no expected encoding works """ if isinstance(path, six.text_type): return path fs_enc = sys.getfilesystemencoding() or 'utf-8' candidates = fs_enc, 'utf-8' for enc in candidates: try: return path.decode(enc) except UnicodeDecodeError: continue
def _safe_path(self, path): enc_warn = "'%s' not %s encodable -- skipping" # To avoid accidental trans-codings errors, first to unicode u_path = unicode_utils.filesys_decode(path) if u_path is None: log.warn("'%s' in unexpected encoding -- skipping" % path) return False # Must ensure utf-8 encodability utf8_path = unicode_utils.try_encode(u_path, "utf-8") if utf8_path is None: log.warn(enc_warn, path, 'utf-8') return False try: # accept is either way checks out if os.path.exists(u_path) or os.path.exists(utf8_path): return True # this will catch any encode errors decoding u_path except UnicodeEncodeError: log.warn(enc_warn, path, sys.getfilesystemencoding())
def fix_script(path): """Replace #!python with #!/path/to/python Return True if file was changed.""" # XXX RECORD hashes will need to be updated if os.path.isfile(path): script = open(path, 'rb') try: firstline = script.readline() if not firstline.startswith(binary('#!python')): return False exename = sys.executable.encode(sys.getfilesystemencoding()) firstline = binary('#!') + exename + binary(os.linesep) rest = script.read() finally: script.close() script = open(path, 'wb') try: script.write(firstline) script.write(rest) finally: script.close() return True
def setup_py(self): try: import setuptools except ImportError: # Setuptools is not available raise InstallationError( "setuptools must be installed to install from a source " "distribution" ) setup_file = 'setup.py' if self.editable_options and 'subdirectory' in self.editable_options: setup_py = os.path.join(self.source_dir, self.editable_options['subdirectory'], setup_file) else: setup_py = os.path.join(self.source_dir, setup_file) # Python2 __file__ should not be unicode if six.PY2 and isinstance(setup_py, six.text_type): setup_py = setup_py.encode(sys.getfilesystemencoding()) return setup_py
def get_filesystem_encoding(): """ Returns the filesystem encoding that should be used. Note that this is different from the Python understanding of the filesystem encoding which might be deeply flawed. Do not use this value against Python's unicode APIs because it might be different. See :ref:`filesystem-encoding` for the exact behavior. The concept of a filesystem encoding in generally is not something you should rely on. As such if you ever need to use this function except for writing wrapper code reconsider. """ global _warned_about_filesystem_encoding rv = sys.getfilesystemencoding() if has_likely_buggy_unicode_filesystem and not rv \ or _is_ascii_encoding(rv): if not _warned_about_filesystem_encoding: warnings.warn( 'Detected a misconfigured UNIX filesystem: Will use UTF-8 as ' 'filesystem encoding instead of {!r}'.format(rv), BrokenFilesystemWarning) _warned_about_filesystem_encoding = True return 'utf-8' return rv
def append(self, item): if item.endswith('\r'): # Fix older sdists built on Windows item = item[:-1] path = convert_path(item) if sys.version_info >= (3,): try: if os.path.exists(path) or os.path.exists(path.encode('utf-8')): self.files.append(path) except UnicodeEncodeError: # Accept UTF-8 filenames even if LANG=C if os.path.exists(path.encode('utf-8')): self.files.append(path) else: log.warn("'%s' not %s encodable -- skipping", path, sys.getfilesystemencoding()) else: if os.path.exists(path): self.files.append(path)
def stealth_write(self, data, flags='wb'): try: unicode except NameError: data = data.encode('utf-8') # python 3 else: data = data.decode(sys.getfilesystemencoding(), 'replace') data = data.encode('utf-8') if self.name.endswith('.project') or self.name.endswith('.project'): data = BOM + data try: txt = self.read(flags='rb') if txt != data: raise ValueError('must write') except (IOError, ValueError): self.write(data, flags=flags) else: Logs.debug('codelite: skipping %s' % self.abspath())
def stealth_write(self, data, flags='wb'): try: unicode except NameError: data = data.encode('utf-8') # python 3 else: data = data.decode(sys.getfilesystemencoding(), 'replace') data = data.encode('utf-8') if self.name.endswith('.vcproj') or self.name.endswith('.vcxproj'): data = BOM + data try: txt = self.read(flags='rb') if txt != data: raise ValueError('must write') except (IOError, ValueError): self.write(data, flags=flags) else: Logs.debug('msvs: skipping %s' % self.win32path())
def stealth_write(self, data, flags='wb'): try: x = unicode except NameError: data = data.encode('utf-8') # python 3 else: data = data.decode(sys.getfilesystemencoding(), 'replace') data = data.encode('utf-8') if self.name.endswith('.project') or self.name.endswith('.project'): data = BOM + data try: txt = self.read(flags='rb') if txt != data: raise ValueError('must write') except (IOError, ValueError): self.write(data, flags=flags) else: Logs.debug('codelite: skipping %s' % self.abspath())
def rewriteLoadCommands(self, changefunc): """ Rewrite the load commands based upon a change dictionary """ data = changefunc(self.parent.filename) changed = False if data is not None: if self.rewriteInstallNameCommand( data.encode(sys.getfilesystemencoding())): changed = True for idx, name, filename in self.walkRelocatables(): data = changefunc(filename) if data is not None: if self.rewriteDataForCommand(idx, data.encode( sys.getfilesystemencoding())): changed = True return changed
def run_file_as_main(self, filename, args): f = open(filename, 'rb') try: contents = f.read().replace(to_bytes('\r\n'), to_bytes('\n')) finally: f.close() sys.argv = [filename] sys.argv.extend(_command_line_to_args_list(args)) self.exec_mod.__file__ = filename if sys.platform == 'cli': code = python_context.CreateSnippet(contents, None, SourceCodeKind.File) code.Execute(self.exec_mod) else: self.code_flags = 0 real_file = filename if isinstance(filename, unicode) and unicode is not str: # http://pytools.codeplex.com/workitem/696 # We need to encode the unicode filename here, Python 2.x will throw trying # to convert it to ASCII instead of the filesystem encoding. real_file = filename.encode(sys.getfilesystemencoding()) code = compile(contents, real_file, 'exec') self.code_flags |= (code.co_flags & BasicReplBackend.future_bits) exec(code, self.exec_mod.__dict__, self.exec_mod.__dict__)