[英]Re-encode a named tuple
輸入:
import mouse
import pickle
from collections import namedtuple
#https://github.com/boppreh/keyboard/blob/master/keyboard/mouse.py
#from ._mouse_event import ButtonEvent, MoveEvent, WheelEvent, LEFT, RIGHT,
MIDDLE, X, X2, UP, DOWN, DOUBLE
ButtonEvent = namedtuple('ButtonEvent', ['event_type', 'button', 'time'])
WheelEvent = namedtuple('WheelEvent', ['delta', 'time'])
MoveEvent = namedtuple('MoveEvent', ['x', 'y', 'time'])
with open ('outfile', 'rb') as fp:
itemlist = pickle.load(fp)
#print (type (itemlist))
print (itemlist[:3])
z=0
xx=50
yy=10
itemlist2=[]
for i in itemlist:
old_event = itemlist[z]
new_event = MoveEvent(x=xx, y=yy, time=old_event.time)
itemlist2.append(new_event)
z=z+1
xx=xx+1
yy=yy+1
print ()
print (itemlist2[:3])
print (type (itemlist))
print (type (itemlist[0]))
print (type (itemlist[0][0]))
print()
print (type (itemlist2))
print (type (itemlist2[0]))
print (type (itemlist2[0][0]))
輸出:
[MoveEvent(x=1369, y=162, time=1504533266.029788), MoveEvent(x=1358, y=165, time=1504533266.0377884), MoveEvent(x=1350, y=167, time=1504533266.045789)]
[MoveEvent(x=50, y=10, time=1504533266.029788), MoveEvent(x=51, y=11, time=1504533266.0377884), MoveEvent(x=52, y=12, time=1504533266.045789)]
<class 'list'>
<class 'mouse._mouse_event.MoveEvent'>
<class 'int'>
<class 'list'>
<class '__main__.MoveEvent'>
<class 'int'>
python的新功能-當我將命名元組的列表重新組合到itemlist2
我需要保留-class mouse._mouse_event.MoveEvent
不確定如何執行此操作
我想我也可以嘗試直接編輯“ itemlist
”
打印時,列表看起來相同(更改后的值除外)
您正在文件中創建一個新的MoveEvent namedtuple類型:
MoveEvent = namedtuple('MoveEvent', ['x', 'y', 'time'])
如果要使用原始版本,則需要使用mouse._mouse_event.MoveEvent
或在上面重命名:
MoveEvent = mouse._mouse_event.MoveEvent
由於mouse.py
包含以下行:
from ._mouse_event import ButtonEvent, MoveEvent, WheelEvent, LEFT, RIGHT, MIDDLE, X, X2, UP, DOWN, DOUBLE
您可能可以使用以下代碼:
import mouse
from mouse import MoveEvent
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.