为非C语言程序员解释缓冲器和Memoryview对象
python 2.7引入了用于缓冲和内存的新API ./p> 我阅读了它们的文档,我认为我有基本概念(以原始形式访问对象的内部数据而不复制它,我想这意味着获取对象的"更快,更少的记忆"方式数据),但是为了真正理解文档,读者应该拥有C的知识,该知识超出了我的范围. 如果有人花时间来: 我会非常感激 用"外行术语"和 在"外行术语"中解释缓冲区和内存视图对象 描述一种情况,其中使用缓冲区和内存视图对象将是做事的" Pythonic方式" 解决方案 这是我写的哈希函数的一行: M = tuple(buffer(M, i, Nb) for i in range(0, len(M), Nb)) 这将把一个长字符串(M)分为长度为nb的较短的"字符串",其中nb是一次可以处理的字节/字符的数量.它可以在不复制字符串的任何部分的情况下执行此操作,就像我这样的字符串切片一样,会发生: M = tuple(M[i*Nb:i*Nb+Nb] for i in range(
0 2024-04-08
编程技术问答社区
python中二进制数据的长度
我正在使用Python.我正在尝试确定一组二进制数据中的正确长度. 如果我分配了变量二进制数据... x = "aabb".decode("hex") 与 相同 x = b'aabb' ,如果是这样,您如何得到多少个字节? (应该是2个字节) 我尝试时: len(x) 我得到4而不是2 ... 我担心X变成字符串或我不了解的其他内容,因为数据类型在Python中是如此的流动... 解决方案 二进制数据的长度仅为len ,并且类型为str在python-2.x中(或python-3.x中的bytes) .但是,您的对象'aabb'不包含两个字节0xAA和0xBb,而是包含4个字节,与ASCII'a''and'b'字符相对应: >>> bytearray([0x61, 0x61, 0x62, 0x62]) bytearray(b'aabb') >>> bytearray([0x61, 0x61, 0x62, 0x62]) == 'a
6 2024-04-05
编程技术问答社区
Python 2.6和3中字节与字节数的关系
我正在使用Python 2.6中的bytes vs bytearray进行实验.我不了解某些差异的原因. a bytes迭代器返回字符串: for i in bytes(b"hi"): print(type(i)) 给出: 但是a bytearray迭代器返回int s: for i in bytearray(b"hi"): print(type(i)) 给出: 为什么有区别? 我想编写可以很好地翻译成python的代码.那么,python 3中的情况是否相同? 解决方案 python 2.6字节仅仅是str 的别名. 将这种"伪类型"引入了[部分]准备程序[和程序员!],以与Python 3.0转换/兼容,其中严格区分语义和用于str的语义(系统地是Unicode)和字节(这些是数组的语言)八位字,用于存储
0 2024-04-05
编程技术问答社区
如何在Python中使用tkinter选择一个目录并存储位置
我正在用浏览按钮创建一个GUI,我只想返回路径.我一直在使用下面的代码来查看解决方案. Tkinter.Button(subframe, text = "Browse", command = self.loadtemplate, width = 10).pack() def loadtemplate(self): filename = tkFileDialog.askopenfilename(filetypes = (("Template files", "*.tplate") ,("HTML files", "*.html;*.htm") ,("All files", "*.*") )) if fi
2 2024-04-05
编程技术问答社区
Python'的coerce()是用来做什么的?
Python内置coerce功能的常见用途是什么?如果我不知道数字值的type as AS根据文档,但是其他常见用法是否存在?我猜想执行算术计算时也称为coerce(),例如,例如 x = 1.0 +2.这是一个内置功能,所以大概它具有一些潜在的常见用法? 解决方案 它从基本上基本上,它基本上是使数字的元组成为相同的基础数字类型,例如 >>> type(10) >>> type(10.0101010) >>> nums = coerce(10, 10.001010) >>> type(nums[0]) >>> type(nums[1]) 这也允许对象像旧类的数字 (这里使用的一个不好的例子是...) >>> class bad: ... """ Dont do this, even if coerce was a good idea thi
0 2024-04-05
编程技术问答社区
在Python2中从sys.stdin制作io.BufferedReader
如何从标准文件对象(例如sys.stdin或您从"打开"获得的内容)制作一个BufferedReader对象? (背景:我需要一个peek()方法,标准文件对象无法使用.也欢迎解决此问题的任何建议.) 我会期望这能起作用,但行不通: >>> import sys >>> import io >>> io.BufferedReader(sys.stdin) Traceback (most recent call last): File "", line 1, in AttributeError: 'file' object has no attribute 'readable' (这是Python 2.7) hah,得到它,至少对于具有文件描述符的任何东西. stream = sys.stdin, or open(...), etc. reader = io.open(stream.fileno(), mode='r
2 2024-04-04
编程技术问答社区
True < 2是如何实现的?
它不是直接在布尔上实现的. >>> True.__lt__(2) AttributeError: 'bool' object has no attribute '__lt__' 显然不是在int上实现: >>> super(bool, True).__lt__(2) AttributeError: 'super' object has no attribute '__lt__' __lt__没有反射版本可以控制操作,而且由于int类型不是bool的子类,无论如何都永远无法使用. python 3的行为如预期的: >>> True.__lt__(2) True 那么,如何在Python 2中实现True
0 2024-04-01
编程技术问答社区
如何在python交互式模式下撤销True = False?
所以我尝试了Ned Deily在答案中提到的"邪恶"的事情在这里.现在,我已经有了True现在始终是错误的.我将如何在交互式窗口中反转? 不做的事情: True = False 由于现在已经被错误完全覆盖了,因此似乎没有一个明显的后退方法.是否有一个真实的模块来自我可以做的事情: True = .True 解决方案 您可以简单地 del del 您的自定义名称将其设置回默认值: >>> True = False >>> True False >>> del True >>> True True >>> 其他解决方案 这有效: >>> True = False >>> True False >>> True = not False >>> True True ,但如果False也被摆弄了.因此,这是更好的: >>> True = not None AS None无法重新签名. 这些也对True进行评估,无
2 2024-04-01
编程技术问答社区
Python 2.x中的True=False赋值
可能的重复: 为什么我不能像i时python true/false值在期待? 似乎是一个愚蠢的问题,但是为什么python中的以下陈述不明确禁止? >> True=False >> True False True和False如何由Python解释器处理? 解决方案 True就像str或任何其他内置的一样,只是默认情况下存在于范围中的名称.您可以像其他任何此类名字一样重新启动它. 其他解决方案 Python实际上很少有保留单词.其余的都需要重新定义.您要小心! 其他解决方案 >>> True = False False 在上面的分配中,True只是您使用的任何其他变量的变量. 它的范围仅限于当前范围.因此,您可以像下面的示例中为其分配任何值.请注意,比较2 >> True = 3 >>> True 3 >>> 2
2 2024-04-01
编程技术问答社区
为自定义类重写bool()。
我想要的是bool(myinstance)返回false(以及在诸如/或/和.我知道如何覆盖>,的条件下时要评估false. 我已经尝试过: class test: def __bool__(self): return False myInst = test() print bool(myInst) #prints "True" print myInst.__bool__() #prints "False" 有什么建议? (我正在使用Python 2.6) 解决方案 这是Python 2.x还是Python 3.x?对于Python 2.x,您希望覆盖__nonzero__. class test: def __nonzero__(self): return False 其他解决方案 如果要将代码与Python3保持兼容,则可以执行此类操作 class test: def __bool_
0 2024-04-01
编程技术问答社区
在Python中定义一个类的 "boolness"。
为什么这项工作不像一个人那样天真地期望? class Foo(object): def __init__(self): self.bar = 3 def __bool__(self): return self.bar > 10 foo = Foo() if foo: print 'x' else: print 'y' (输出为x) 解决方案 对于Python 2-3兼容性,在类别定义块后添加一条行以吸引该方法: class Foo(object): ... Foo.__nonzero__ = Foo.__bool__ 或直接在类定义中包含别名: class Foo(object): def __bool__(self): ... __nonzero__ = __bool__ 当然,这也将相反,但我认为这个名字__nonzero__只是Pyt
0 2024-04-01
编程技术问答社区
列表理解即使在理解的范围之后也会重新绑定名字。这样做对吗?
综合显示与范围的异常相互作用.这是预期的行为吗? x = "original value" squares = [x**2 for x in range(5)] print(x) # Prints 4 in Python 2! 有抱怨的风险,这是一个残酷的错误根源.当我编写新代码时,由于重新启动,我偶尔会发现非常奇怪的错误 - 即使现在我知道这是一个问题.我需要制定一个规则,例如"始终使用列表中的序列vars在列表中的综合"中,但即使不是万无一失. 有一个随机的炸弹等待的事实否定了清单综合的所有不错的"易用性". 解决方案 列表综合泄漏python 2中的循环控制变量,而不是python 3中的3. guido van Rossum(Python的创建者)解释 我们还对Python进行了另一个更改 3,提高列表之间的等价 综合和发电机 表达.在Python 2中,列表 理解"泄漏"循环控制 变量到周围范围: x = 'before' a = [x for
2 2024-03-30
编程技术问答社区
python获取unicode字符串大小
我有一个二进制文件.该文件包含一个UTF-8字符串.而且,可以保证该字符串只是一个单词. 在Python中,我该如何在此字符串中获得数量的字母? 假设,我打开了此文件并阅读字节: bytes = open("1.dat", "rb").read() 接下来我该怎么做才能找出UTF-8字符串的长度(字母,而不是字节)? 解决方案 unicode_string = bytes.decode("utf-8") print len(unicode_string)
0 2024-03-30
编程技术问答社区
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 20: ordinal not in range(128)
我在从不同网站(在不同的网站上)获取的文本中处理Unicode字符时遇到了问题.我正在使用美丽的小组. 问题在于,错误并非总是可复制的.有时它可以与某些页面一起使用,有时会通过扔UnicodeEncodeError来抗衡.我已经尝试了我能想到的一切,但是我还没有发现任何始终如一的事情而没有扔出某种与Unicode相关的错误. 造成问题的代码部分之一如下: agent_telno = agent.find('div', 'agent_contact_number') agent_telno = '' if agent_telno is None else agent_telno.contents[0] p.agent_info = str(agent_contact + ' ' + agent_telno).strip() 以上片段运行时,这是在某些字符串上产生的堆栈跟踪: Traceback (most recent call last): File "f
2 2024-03-30
编程技术问答社区
用popen和专用TTY运行交互式Bash Python
我需要在Python的分离过程中运行一个交互式bash实例,并具有自己的专用TTY(我不能使用PEXPEPT). 我使用此代码段,通常在类似程序中使用: master, slave = pty.openpty() p = subprocess.Popen(["/bin/bash", "-i"], stdin=slave, stdout=slave, stderr=slave) os.close(slave) x = os.read(master, 1026) print x subprocess.Popen.kill(p) os.close(master) 但是当我运行时,我会得到以下输出: $ ./pty_try.py bash: cannot set terminal process group (10790): Inappropriate ioctl for device bash: no job control in this shell 运行的链条
0 2024-03-27
编程技术问答社区
Lambda返回有效载荷 botocore.response.StreamingBody对象打印出来,但在变量中是空的
我正在从另一个功能中调用lambda功能,并希望根据响应,相当标准的内容采取其他操作.但是我得到了一些意外的行为,这可能是显而易见的,但这是在避开我.我在最简单的示例中重新创建了我的示例,任何帮助都将不胜感激. lambda函数 def lambda_handler(event, context): return 'Just a string' 调用lambda函数的代码 def invoke_lambda(payload): r = lambda_client.invoke( FunctionName='MyLambdaFunction', InvocationType='RequestResponse', Payload=bytes(payload) ) p = r['Payload'].read() print p #Pri
2 2024-03-22
编程技术问答社区
一个Python脚本向另一个Python脚本提供 "用户输入"。
这是我的第一个问题,希望我做对了. 假设我有这些文件: " simple.py": a=raw_input("your name?") print "Hello",a 但是,有了不同的脚本,我想多次执行" simple.py"并自动给出输入,它将像: 一样工作. " every.py" run simple.py input=Alice run simple.py input=Bob ... 获得 "你好爱丽丝" "你好鲍勃" ... 我知道可以通过使用OS.System来制作"所有every.py"运行" simple.py",但是是否有任何实用方法可以做类似的事情?如果第一个脚本要求输入几次怎么办? 重要的是,我不能编辑simple.py.py ,只有其他文件 预先感谢:) 解决方案 import sys print "Hello",sys.argv[1] 运行C:\Python26\python.exe simple.py
0 2024-03-21
编程技术问答社区
如何在Flask-Login中实现user_loader回调
我正在尝试使用烧瓶和 flask-login 扩展以在烧瓶应用程序.目的是从数据库中获取用户帐户信息,然后登录用户,但我被卡住了.但是,我将其范围缩小到烧瓶行为的特定部分. 根据 flask-login文档,我需要创建一个user_loader"回调"功能.此功能的实际目的和实施使我几天都感到困惑: 您需要提供一个User_loader回调.使用此回调 从会话中存储的用户ID重新加载用户对象.它 应采用用户的Unicode ID,然后返回相应的 用户对象.例如: @login_manager.user_loader def load_user(userid): return User.get(userid) 现在,说我希望用户将名称和密码输入表单,检查数据库并登录用户.数据库的功能正常,对我来说没问题. 这个"回调"函数希望通过用户ID#传递,然后返回用户对象(我从数据库中加载的内容).但是我真的没有得到应该检查/做的事情,因为无论如何用户ID都是从同
0 2024-03-19
编程技术问答社区
Python'的hasattr有时会返回不正确的结果
为什么hasattr说实例没有foo属性? >>> class A(object): ... @property ... def foo(self): ... ErrorErrorError ... >>> a = A() >>> hasattr(a, 'foo') False 我期望: >>> hasattr(a, 'foo') NameError: name 'ErrorErrorError' is not defined` 解决方案 python 2实施 hasattr hasattr 相当天真,它只是试图访问该属性,并查看是否会引起例外. 不幸的是,hasattr会吃任何异常类型,而不仅仅是AttributeError匹配尝试访问的属性的名称.它在所示的示例中捕获了一个NameError,这导致False的不正确结果返回那里.为了增加对伤害的侮辱,属性内部的任何未手持例外都会被吞噬,并且属性代码内的错误可能会丢失,掩盖
0 2024-03-19
编程技术问答社区
获得所有可能的类属性的完整列表
给定一个简单的类,有没有办法输出所有可能的属性?标准属性,例如__class__和__doc__ 和 特殊读取属性喜欢__mro__,__bases__等.通常, 全部 当前属性? 考虑一类最简单的情况: class myClass: pass dir(),vars()和inspect.getmembers()均排除某些builtin属性.最完整的列表是通过使用myClass.__dir__(MyClass)提供的,在添加内置属性时,不包括MyClass的用户定义的属性,例如: In [3]: set(MyClass.__dir__(MyClass)) - set(dir(MyClass)) Out[3]: {'__abstractmethods__', '__base__', '__bases__', '__basicsize__', '__call__', '__dictoffset__', '__flags__', '__instancechec
2 2024-03-18
编程技术问答社区