我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用sys.getdefaultencoding()。
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 _ustr(obj): """Drop-in replacement for str(obj) that tries to be Unicode friendly. It first tries str(obj). If that fails with a UnicodeEncodeError, then it tries unicode(obj). It then < returns the unicode object | encodes it with the default encoding | ... >. """ if isinstance(obj,unicode): return obj try: # If this works, then _ustr(obj) has the same behaviour as str(obj), so # it won't break any existing code. return str(obj) except UnicodeEncodeError: # Else encode it ret = unicode(obj).encode(sys.getdefaultencoding(), 'xmlcharrefreplace') xmlcharref = Regex('&#\d+;') xmlcharref.setParseAction(lambda t: '\\u' + hex(int(t[0][2:-1]))[2:]) return xmlcharref.transformString(ret) # build list of single arg builtins, tolerant of Python version, that can be used as parse actions
def formatyearpage(self, theyear, width=3, css='calendar.css', encoding=None): """ Return a formatted year as a complete HTML page. """ if encoding is None: encoding = sys.getdefaultencoding() v = [] a = v.append a('<?xml version="1.0" encoding="%s"?>\n' % encoding) a('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n') a('<html>\n') a('<head>\n') a('<meta http-equiv="Content-Type" content="text/html; charset=%s" />\n' % encoding) if css is not None: a('<link rel="stylesheet" type="text/css" href="%s" />\n' % css) a('<title>Calendar for %d</title>\n' % theyear) a('</head>\n') a('<body>\n') a(self.formatyear(theyear, width)) a('</body>\n') a('</html>\n') return ''.join(v).encode(encoding, "xmlcharrefreplace")
def mime_multipart(_, context, arg): """mime_multipart composes a MIME multipart string. Example: "UserData": { "Fn::Base64": { "CFPP::MimeMultipart": [ ["text/x-shellscript", {"CFPP::FileToString": "userdata.sh"}], ["text/cloud-config", {"CFPP::FileToString": "cloud-init.yaml"}] ] } } """ _raise_unless_mime_params(context, arg) mime_doc = MIMEMultipart() # set boundary explicitly so that they are stable based on path in the template. mime_doc.set_boundary("=" * 10 + hashlib.sha1(".".join(context)).hexdigest() + "=" * 3) for mime_type, contents in arg: sub_message = MIMEText(contents, contents, sys.getdefaultencoding()) mime_doc.attach(sub_message) return mime_doc.as_string()
def _ustr(obj): """Drop-in replacement for str(obj) that tries to be Unicode friendly. It first tries str(obj). If that fails with a UnicodeEncodeError, then it tries unicode(obj). It then < returns the unicode object | encodes it with the default encoding | ... >. """ if isinstance(obj,unicode): return obj try: # If this works, then _ustr(obj) has the same behaviour as str(obj), so # it won't break any existing code. return str(obj) except UnicodeEncodeError: # Else encode it ret = unicode(obj).encode(sys.getdefaultencoding(), 'xmlcharrefreplace') xmlcharref = Regex(r'&#\d+;') xmlcharref.setParseAction(lambda t: '\\u' + hex(int(t[0][2:-1]))[2:]) return xmlcharref.transformString(ret) # build list of single arg builtins, tolerant of Python version, that can be used as parse actions
def cmdexec(cmd): """ return unicode output of executing 'cmd' in a separate process. raise cmdexec.Error exeception if the command failed. the exception will provide an 'err' attribute containing the error-output from the command. if the subprocess module does not provide a proper encoding/unicode strings sys.getdefaultencoding() will be used, if that does not exist, 'UTF-8'. """ process = subprocess.Popen(cmd, shell=True, universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, err = process.communicate() if sys.version_info[0] < 3: # on py3 we get unicode strings, on py2 not try: default_encoding = sys.getdefaultencoding() # jython may not have it except AttributeError: default_encoding = sys.stdout.encoding or 'UTF-8' out = unicode(out, process.stdout.encoding or default_encoding) err = unicode(err, process.stderr.encoding or default_encoding) status = process.poll() if status: raise ExecutionFailed(status, status, cmd, out, err) return out
def write(self, data, mode='w', ensure=False): """ write data into path. If ensure is True create missing parent directories. """ if ensure: self.dirpath().ensure(dir=1) if 'b' in mode: if not py.builtin._isbytes(data): raise ValueError("can only process bytes") else: if not py.builtin._istext(data): if not py.builtin._isbytes(data): data = str(data) else: data = py.builtin._totext(data, sys.getdefaultencoding()) f = self.open(mode) try: f.write(data) finally: f.close()
def sysexec(self, *argv, **popen_opts): """ return stdout text from executing a system child process, where the 'self' path points to executable. The process is directly invoked and not through a system shell. """ from subprocess import Popen, PIPE argv = map_as_list(str, argv) popen_opts['stdout'] = popen_opts['stderr'] = PIPE proc = Popen([str(self)] + argv, **popen_opts) stdout, stderr = proc.communicate() ret = proc.wait() if py.builtin._isbytes(stdout): stdout = py.builtin._totext(stdout, sys.getdefaultencoding()) if ret != 0: if py.builtin._isbytes(stderr): stderr = py.builtin._totext(stderr, sys.getdefaultencoding()) raise py.process.cmdexec.Error(ret, ret, str(self), stdout, stderr,) return stdout
def __logHgCommandError( self, e ): if e.out: all_lines = e.out.decode( sys.getdefaultencoding() ).split('\n') if all_lines[-1] == '': del all_lines[-1] for line in all_lines: self.log.info( line ) self.log.error( "Hg command '%s' returned with exit code %i" % (' '.join( [arg.decode( sys.getdefaultencoding() ) for arg in e.args] ), e.ret) ) if e.err: all_lines = e.err.decode( sys.getdefaultencoding() ).split('\n') if all_lines[-1] == '': del all_lines[-1] for line in all_lines: self.log.error( line ) # ------------------------------------------------------------
def handleOutput( self, data : bytes ): text = data.decode( sys.getdefaultencoding() ) self.__buffer = self.__buffer + text while '\n' in self.__buffer: line, self.__buffer = self.__buffer.split( '\n', 1 ) # save special values if line.startswith( 'realm:' ): self.__realm = line.split( ':', 1 )[-1].strip() continue elif line.startswith( 'http authorization required for ' ): self.__url = line[len('http authorization required for '):].strip() elif line =='abort: authorization failed': self.__auth_failed = True if self.__cb is not None: self.__cb( line )
def __logGitCommandError( self, e ): self.log.error( "'%s' returned with exit code %i" % (' '.join(str(i) for i in e.command), e.status) ) if e.stderr: if type( e.stderr ) == bytes: all_lines = e.stderr.decode( sys.getdefaultencoding() ).split('\n') else: all_lines = e.stderr.split('\n') if all_lines[-1] == '': del all_lines[-1] for line in all_lines: self.log.error( line ) # ------------------------------------------------------------
def process_tempita_pyx(fromfile, tofile): try: try: from Cython import Tempita as tempita except ImportError: import tempita except ImportError: raise Exception('Building PyFunt requires Tempita: ' 'pip install --user Tempita') from_filename = tempita.Template.from_filename template = from_filename(fromfile, encoding=sys.getdefaultencoding()) pyxcontent = template.substitute() assert fromfile.endswith('.pyx.in') pyxfile = fromfile[:-len('.pyx.in')] + '.pyx' with open(pyxfile, "w") as f: f.write(pyxcontent) process_pyx(pyxfile, tofile)
def _wrap_convert(from_type, fn, encoding=None): '''Decorate a function converting all str arguments to unicode or vice-versa''' conv = 'decode' if from_type is str else 'encode' encoding = encoding or sys.getdefaultencoding() # override string defaults using partial aspec, dflts = inspect.getargspec(fn), {} if aspec.defaults: for k,v in zip(aspec.args[-len(aspec.defaults):],aspec.defaults): dflts[k] = _convert_arg(v, from_type, conv, encoding) fn = functools.partial(fn, **dflts) @functools.wraps(fn.func if isinstance(fn, functools.partial) else fn) def converted(*args, **kwargs): args = [_convert_arg(a, from_type, conv, encoding) for a in args] for k,v in kwargs.iteritems(): kwargs[k] = _convert_arg(v, from_type, conv, encoding) return fn(*args, **kwargs) return converted