python 3.4,windows 10,cython 0.21.1
我正在使用cython将此函数编译为c
def weakchecksum(data):
"""
Generates a weak checksum from an iterable set of bytes.
"""
cdef long a, b, l
a = b = 0
l = len(data)
for i in range(l):
a += data[i]
b += (l - i)*data[i]
return (b << 16) | a, a, b
Run Code Online (Sandbox Code Playgroud)
产生此错误:"OverflowError:Python int太大而无法转换为C long"
我也尝试将它们声明为unsigned longs.我用什么类型来处理非常大的数字?如果它对于交流时间太大有任何解决方法吗?
我有一个用python 2.7创建的pickle文件,我正在尝试移植到python 3.6.该文件保存在py 2.7 viapickle.dumps(self.saved_objects, -1)
并通过loads(data, encoding="bytes")(从rb模式打开的文件)加载到python 3.6 中.如果我尝试打开r模式并传递encoding=latin1给loads我得到UnicodeDecode错误.当我打开它作为字节流时,它会加载,但字面上每个字符串现在都是一个字节字符串.每个对象的__dict__密钥都会b"a_variable_name"在调用时生成属性错误,an_object.a_variable_name因为它__getattr__传递一个字符串并且__dict__只包含字节.我觉得我已经尝试了各种参数和pickle协议的组合.除了强行将所有对象的__dict__键转换为字符串之外,我很茫然.有任何想法吗?
**跳到4/28/17更新以获得更好的示例
-------------------------------------------------- -------------------------------------------------- ---------
**更新4/27/17
这最小的例子说明了我的问题:
从py 2.7.13
import pickle
class test(object):
def __init__(self):
self.x = u"test ¢" # including a unicode str breaks things
t = test()
dumpstr = pickle.dumps(t)
>>> dumpstr
"ccopy_reg\n_reconstructor\np0\n(c__main__\ntest\np1\nc__builtin__\nobject\np2\nNtp3\nRp4\n(dp5\nS'x'\np6\nVtest \xa2\np7\nsb."
Run Code Online (Sandbox Code Playgroud)
从py 3.6.1
import pickle
class test(object):
def __init__(self):
self.x = …Run Code Online (Sandbox Code Playgroud) 我正在尝试从docx文件中提取页面和标题数据.该文件是几百页,每个页面都有一个表和一个标题.标题具有需要与每个表配对的相关信息.我能够提取标题和表格数据,我无法将它们可靠地配对在一起.
使用win32com这是我到目前为止所拥有的
# getting the table page number
app = Dispatch("Word.Application")
doc = app.Documents.Open(filename)
table_1_page = doc.Tables(1).Range.Information(3) # 3 == wdActiveEndPageNumber
Run Code Online (Sandbox Code Playgroud)
出现此问题的原因是标题TextFrames并且在多个页面上重复,因此当我调用时:
# getting the header page number
doc.Sections(1).Headers(1).Shapes(1).TextFrame.TextRange.Information(3)
Run Code Online (Sandbox Code Playgroud)
我得到了TextFrame发生的其中一个页面.页面选择似乎有点武断,有时它的第一个是最后一个,但它不可预测.
我花了一点时间阅读了对象模型在这里.最终,捕捉每页显示的所有项目而不重新发明轮子会很好.
# filename docx_parser.py
import pythoncom
class OpenDoc(object):
def __init__(self, docx_path):
import win32com.client as win32
self.path = docx_path
self.word = win32.Dispatch("Word.Application")
self.word.Visible = 0
self.word.Documents.Open(p)
self.doc = self.word.ActiveDocument
def get_table_count(self):
return self.doc.Tables.Count
def count_table_rows(self, table):
return table.Rows.Count
def count_table_columns(self, table):
return table.Columns.Count
def get_headers(self):
headers = self.doc.Sections(1).Headers(1) …Run Code Online (Sandbox Code Playgroud) 是否可以从内置函数或方法中检索 func_code 对象?即来自 time.time()
import time
dir(time.time)
Run Code Online (Sandbox Code Playgroud)
不包含函数对象
也不
dir(time.time.__call__)
Run Code Online (Sandbox Code Playgroud)
它只是返回自身
time.time.__call__.__call__.__call__
Run Code Online (Sandbox Code Playgroud)
..等等。
有任何想法吗?
环境:python 3.8、flask-sqlalchemy、postgres
class User(db.Model):
name = db.Column(db.Text)
birthday = db.Column(db.DateTime)
@classmethod
def upcoming_birthdays(cls):
return (cls.query
.filter("??")
.all()
)
Run Code Online (Sandbox Code Playgroud)
我想创建一个 sqlalchemy 查询来过滤 X 天内即将生日的用户。我考虑过使用该extract函数从生日中提取月份和日期,但这对于月底或年底的日子不起作用。我还考虑过尝试将生日转换为儒略日期以进行比较,但我不知道该怎么做。
例如,如果今天是 2020 年 8 月 30 日,它将返回用户的生日
感谢您的帮助
python ×5
python-2.7 ×3
python-3.x ×2
cython ×1
pickle ×1
python-3.6 ×1
python-docx ×1
sqlalchemy ×1
win32com ×1