小编Jor*_*Lee的帖子

使用实例方法作为另一个类中的装饰器

我正在尝试创建一个MySerial实例化串行对象的类 ( ),以便我可以写入/读取串行设备 (UART)。有一个实例方法,它是一个装饰器,它包裹着属于完全不同的类 ( App)的函数。所以装饰器负责写入和读取串行缓冲区。

如果我MySerialApp类内部创建了一个实例,我就不能使用从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)

python patch mocking instance python-decorators

7
推荐指数
1
解决办法
1298
查看次数

断电后无法打开(本地 DynamoDB)数据库文件

历史:我能够读取/写入我的本地 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)

amazon-web-services amazon-dynamodb

4
推荐指数
4
解决办法
5187
查看次数

如何解码包含无效字节的字节对象,Python3

在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)

string encode decode python-3.x

2
推荐指数
1
解决办法
2785
查看次数

在每个分号后插入新行

类似的答案是如此复杂且难以理解;我必须花几个小时学习不必要的 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。

regex bash awk sed

-2
推荐指数
1
解决办法
2703
查看次数