在python源代码中,我偶然发现我在字符串之前看到了一个小b:
b"abcdef"
Run Code Online (Sandbox Code Playgroud)
我知道u前缀表示unicode字符串,以及r原始字符串文字的前缀.
什么b样的代码和哪种源代码是有用的,因为它看起来完全像没有任何前缀的普通字符串?
只是发布这个,所以我可以稍后搜索它,因为它似乎总是让我感到困惑:
$ python3.2
Python 3.2 (r32:88445, Oct 20 2012, 14:09:50)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import curses
>>> print(curses.version)
b'2.2'
>>> print(str(curses.version))
b'2.2'
>>> print(curses.version.encode('utf-8'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'bytes' object has no attribute 'encode'
>>> print(str(curses.version).encode('utf-8'))
b"b'2.2'"
Run Code Online (Sandbox Code Playgroud)
问题:如何bytes在Python 3中打印二进制()字符串,没有b'前缀?
我是python编程的新手,我有点困惑.我尝试从字符串中获取字节以进行哈希和加密,但我得到了
b'...'
Run Code Online (Sandbox Code Playgroud)
b字符串前面的字符就像下面的例子一样.有没有办法避免这种情况?.任何人都可以提供解决方案吗?对不起这个愚蠢的问题
import hashlib
text = "my secret data"
pw_bytes = text.encode('utf-8')
print('print',pw_bytes)
m = hashlib.md5()
m.update(pw_bytes)
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
print b'my secret data'
Run Code Online (Sandbox Code Playgroud) 我有一个带有 Django 后端的 Web 项目,我决定将图像存储为 BinaryField,这对我来说在进行备份和恢复时似乎更方便。
首先我创建了模型:
class ThermalSource(ClusterUnit):
...
scheme_image = models.BinaryField(verbose_name='Scheme', blank=True, null=True, editable=True)
...
Run Code Online (Sandbox Code Playgroud)
然后创建序列化器以在视图集中使用(我知道它与管理界面无关,但也许它会很有用):
class Base64BinaryField(serializers.Field):
def to_representation(self, value):
from base64 import b64encode
return b64encode(value)
def to_internal_value(self, data):
from base64 import b64decode
return b64decode(data)
class ThermalSourceSerializer(APAMModelSerializer):
...
scheme_image_base64 = Base64BinaryField(source='scheme_image')
...
Run Code Online (Sandbox Code Playgroud)
现在我可以通过 Django REST Framework 正确获取和设置转换为 Base64 的图像。
管理类ThermalSource现在看起来是这样:
class ThermalSourceForm(forms.ModelForm):
scheme_image = forms.FileField(required=False)
def save(self, commit=True):
if self.cleaned_data.get('scheme_image') is not None \
and hasattr(self.cleaned_data['scheme_image'], 'file'):
data = self.cleaned_data['scheme_image'].file.read()
self.instance.scheme_image = data
return self.instance …Run Code Online (Sandbox Code Playgroud) 我正在尝试阅读网站的内容,但我得到一个空的字节对象b''.
import urllib3
from urllib3 import PoolManager
urllib3.disable_warnings()
https = PoolManager()
r = https.request('GET', 'https://minemen.club/leaderboards/practice/')
print(r.status)
print(r.read())
Run Code Online (Sandbox Code Playgroud)
当我在网络浏览器中打开 URL 时,我看到了该网站,结果r.status为 200(成功)。
为什么不r.read()返回内容?
python ×5
python-3.x ×2
string ×2
binary ×1
byte ×1
django ×1
encryption ×1
syntax ×1
urllib3 ×1