我正在尝试创建一个MySerial实例化串行对象的类 ( ),以便我可以写入/读取串行设备 (UART)。有一个实例方法,它是一个装饰器,它包裹着属于完全不同的类 ( App)的函数。所以装饰器负责写入和读取串行缓冲区。
如果我MySerial在App类内部创建了一个实例,我就不能使用从MySerial. 我已经尝试了上述实例方法并使用类方法,如第二个答案中所述,但我确实需要实例化MySerial,从而使用__init__.
如何做到这一点?不可能吗?
class MySerial():
def __init__(self):
pass # I have to have an __init__
def write(self):
pass # write to buffer
def read(self):
pass # read to buffer
def decorator(self, func):
def func_wrap(*args, **kwargs):
self.write(func(*args, **kwars))
return self.read()
return func_wrap
class App():
def __init__(self):
self.ser = MySerial()
@self.ser.decorator # <-- does not work here.
def myfunc(self): …Run Code Online (Sandbox Code Playgroud) 历史:我能够读取/写入我的本地 DynamoDB 环境。我遵循了用于下载和运行 DynamoDB 的 AWS 文档 [ http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.html]
问题:我的计算机意外断电。现在,我在启动 DynamoDB 进程后收到以下错误
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb
Run Code Online (Sandbox Code Playgroud)
错误信息:
Aug 23, 2017 3:52:42 PM com.almworks.sqlite4java.Internal log
WARNING: [sqlite] SQLiteQueue[shared-local-instance.db]: stopped abnormally, reincarnating in 3000ms
Aug 23, 2017 3:52:45 PM com.almworks.sqlite4java.Internal log
WARNING: [sqlite] cannot open DB[2]: com.almworks.sqlite4java.SQLiteException: [14] unable to open database file
Aug 23, 2017 3:52:45 PM com.almworks.sqlite4java.Internal log
SEVERE: [sqlite] SQLiteQueue[shared-local-instance.db]: error running job queue
com.almworks.sqlite4java.SQLiteException: [14] unable to open database file
at com.almworks.sqlite4java.SQLiteConnection.open0(SQLiteConnection.java:1480)
at com.almworks.sqlite4java.SQLiteConnection.open(SQLiteConnection.java:282) …Run Code Online (Sandbox Code Playgroud) 在python2中,我可以整天生成以字符串格式表示的这些十六进制字节
'\x00\xaa\xff'
>>>’00'.decode('hex') + 'aa'.decode('hex') + 'ff'.decode('hex')
>>>'\x00\xaa\xff'
Run Code Online (Sandbox Code Playgroud)
同样,我可以在 python3 中做到这一点
>>> bytes.fromhex(’00’) + bytes.fromhex(‘aa’) + bytes.fromhex(‘ff’)
>>>b'\x00\xaa\xff'
Run Code Online (Sandbox Code Playgroud)
根据py2->py3这里的变化
Python 3.0 使用文本和(二进制)数据的概念,而不是 Unicode 字符串和 8 位字符串。所有文本都是Unicode;但是编码后的 Unicode 表示为二进制数据。
所以 Py2 版本的输出是一个字符串,而 Py3 版本的输出是字节类型的二进制数据
但我真的需要一个字符串版本!
根据上述文档:
由于 str 和 bytes 类型不能混合使用,您必须始终在它们之间进行显式转换。使用 str.encode() 从 str 转到 bytes,使用 bytes.decode() 从 bytes 转到 str。您还可以分别使用 bytes(s, encoding=...) 和 str(b, encoding=...) 。
好的,现在我必须解码这个字节类型的二进制数据......
>>> b'\x00\xaa\xff'.decode()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xaa in …Run Code Online (Sandbox Code Playgroud) 类似的答案是如此复杂且难以理解;我必须花几个小时学习不必要的 awk、sed 和/或 RegEx 命令。
因此,我有一个非常长的文件(foo_In.txt),其格式为一大行,如下所示:
stuff;stuff3;stuff;asdf;fsdf;asdf;sfd;
Run Code Online (Sandbox Code Playgroud)
我想输入 foo_In.txt 并输出 foo_Out.txt,
stuff;
stuff3;
stuff;
asdf;
fsdf;
asdf;
sfd;
Run Code Online (Sandbox Code Playgroud)
我将能够使用脚本语言,例如批处理、shell 或 python。